我有两个看起来像这样的数据框:
df1=
A B
1 A1 B1
2 A2 B2
3 A3 B3
df2 =
A C
4 A4 C4
5 A5 C5
我想将df2
追加到df1
,就像这样:
A B
1 A1 B1
2 A2 B2
3 A3 B3
4 A4 NaN
5 A5 NaN
(注意:我已编辑了数据框,因此并非df1
中的所有列都必须在df2
中)
无论我使用concat
还是append
,我得到的结果数据都会有一个名为" C"的列。前三行填充nan
。我只想在df1
中保留两个原始列,并附加新值。有没有办法连接数据帧而不必在之后删除额外的列?
答案 0 :(得分:2)
您可以先按subset
print (df2[['A']])
A
4 A4
5 A5
print (pd.concat([df1, df2[['A']]]))
A B
1 A1 B1
2 A2 B2
3 A3 B3
4 A4 NaN
5 A5 NaN
print (df1.append(df2[['A']]))
A B
1 A1 B1
2 A2 B2
3 A3 B3
4 A4 NaN
5 A5 NaN
print (df2[['A','B']])
A B
4 A4 B4
5 A5 B5
print (pd.concat([df1, df2[['A','B']]]))
A B
1 A1 B1
2 A2 B2
3 A3 B3
4 A4 B4
5 A5 B5
或者:
print (df1.append(df2[['A','B']]))
A B
1 A1 B1
2 A2 B2
3 A3 B3
4 A4 B4
5 A5 B5
通过评论编辑:
如果df1
和df2
中的列有不同的列,请使用intersection
:
print (df1)
A B D
1 A1 B1 R
2 A2 B2 T
3 A3 B3 E
print (df2)
A B C
4 A4 B4 C4
5 A5 B5 C5
print (df1.columns.intersection(df2.columns))
Index(['A', 'B'], dtype='object')
print (pd.concat([df1, df2[df1.columns.intersection(df2.columns)]]))
A B D
1 A1 B1 R
2 A2 B2 T
3 A3 B3 E
4 A4 B4 NaN
5 A5 B5 NaN
答案 1 :(得分:0)
实际上,解决方案位于this page的一个不起眼的角落。这是使用的代码:
pd.concat([df1,df2],join_axes=[df1.columns])