Pandas将列附加到数据帧

2024-04-16 13:15:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据帧,为简单起见如下所示:

 A     B     C     D     E
 1     2     3     4     5
 5     4     3     2     1
 1     3     5     7     9
 9     7     5     3     1

第二个看起来像:

 F
 0
 1
 0
 1

因此,两个数据帧的行数相同

我想将列F附加到第一个数据帧:

 A     B     C     D     E     F
 1     2     3     4     5     0
 5     4     3     2     1     1
 1     3     5     7     9     0
 9     7     5     3     1     1

我已经尝试过各种方法,比如join、iloc、手动添加df['F'],但似乎没有找到答案。大多数情况下,我会将F添加到数据帧中,但其数据填充了NaN(例如,第一个数据帧填充的行,我在F中得到NaN,然后我得到两倍的行数,其中NaN无处不在,除了F,数据是OK的)


2条回答

似乎您希望将列F添加到第一个数据帧,而不考虑两个数据帧的索引。在这种情况下,只需通过列F的ndarray赋值

df1['F'] = df2['F'].to_numpy()

Out[131]:
   A  B  C  D  E  F
0  1  2  3  4  5  0
1  5  4  3  2  1  1
2  1  3  5  7  9  0
3  9  7  5  3  1  1

您只需在原始数据帧上创建一个新列,分配第二个数据帧的结果:

生成示例

import pandas as pd 
data1 = {"A": [1, 5, 1, 9],
         "B": [2, 4, 3, 7],
         "C": [3, 3, 5, 5],
         "D": [4, 2, 7, 3],
         "E": [5, 1, 9, 1]}

data2 = {"F": [0, 1, 0, 1]}

df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

#creating the column
df1["F"] = df2.F
df1
>       A   B   C   D   E   F
>   0   1   2   3   4   5   0
>   1   5   4   3   2   1   1
>   2   1   3   5   7   9   0
>   3   9   7   5   3   1   1

相关问题 更多 >