python - 如何使用 pandas 行形成新列

标签 python python-3.x pandas numpy

我有以下内容:

pa = pd.DataFrame({'a':np.array([[1.,4.],[2.],[3.,4.,5.]]), 
                   'b':np.array([[2.,5.],[3., 6.],[4.,5.,6.]])})

这将产生:

    a               b
0   [1.0, 4.0]      [2.0, 5.0]
1   [2.0, 3.3]      [3.0, 6.0]
2   [3.0, 4.0, 5.0] [4.0, 5.0, 6.0]

我尝试了各种技术将每个数组的项目连接到一个新数组中。

以这种方式:

    a               b               c
0   [1.0, 4.0]      [2.0, 5.0]      [1.0, 2.0]
1   [1.0, 4.0]      [2.0, 5.0]      [4.0, 5.0]
2   [2.0, 3.3]      [3.0, 6.0]      [2.0, 3.0]
3   [2.0, 3.3]      [3.0, 6.0]      [3.3, 6.0]
4   [3.0, 4.0, 5.0] [4.0, 5.0, 6.0] [3.0, 4.0]
5   [3.0, 4.0, 5.0] [4.0, 5.0, 6.0] [4.0, 5.0]
6   [3.0, 4.0, 5.0] [4.0, 5.0, 6.0] [5.0, 6.0]

如果还有其他列,我可以将这些项目更新到新创建的列中。但我一直坚持到这个位置。

有人可以帮忙吗?

最佳答案

通过使用 zip 和取消嵌套方法

pa['New']=[list(zip(x,y)) for x, y in zip(pa.a,pa.b)]
s=pa.New.str.len()
df=pd.DataFrame({'a':pa['a'].repeat(s),'b':pa['b'].repeat(s),'New':list(map(list,pa.New.sum()))})
df
          New                a                b
0  [1.0, 2.0]       [1.0, 4.0]       [2.0, 5.0]
0  [4.0, 5.0]       [1.0, 4.0]       [2.0, 5.0]
1  [2.0, 3.0]       [2.0, 3.3]       [3.0, 6.0]
1  [3.3, 6.0]       [2.0, 3.3]       [3.0, 6.0]
2  [3.0, 4.0]  [3.0, 4.0, 5.0]  [4.0, 5.0, 6.0]
2  [4.0, 5.0]  [3.0, 4.0, 5.0]  [4.0, 5.0, 6.0]
2  [5.0, 6.0]  [3.0, 4.0, 5.0]  [4.0, 5.0, 6.0]

关于python - 如何使用 pandas 行形成新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49988866/

相关文章:

python - 你如何让你的 Sprite 不在屏幕上复制自己?一旦文本出现,你如何让你的 Sprite 消失或重新开始?

python - Pip 安装到错误的文件夹

python - 有没有更好的方法根据大小写进行名称分类?

python - 如何为机器学习有意义地替换 Nan 值

python - 我的本地 Eclipse 可以在 Docker 容器中安装 Access 库吗?

Python如何按行比较2个数组中的元素

python - 在Python中读取大型二进制文件的部分内容

python - cv2.imshow 失败 : Fontconfig error: failed reading config file

python - 使用 seaborn clustermap 在层次聚类中提取集群行

python - 加入语音 channel (discord.py)