繁体   English   中英

Pandas附加数据帧而不创建新列

[英]Pandas append dataframe without creating new columns

我有两个看起来像这样的数据帧:

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保留两个原始列,并附加新值。 有没有办法连接数据帧而不必在之后删除额外的列?

您可以先过滤列以按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

编辑评论:

如果df1df2中的列具有不同的列,请使用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

实际上,该解决方案位于此页面的一个不明确的角落。 这是要使用的代码:

pd.concat([df1,df2],join_axes=[df1.columns])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM