Python 在不创建新列的情况下追加dataframe

Python 在不创建新列的情况下追加dataframe,python,pandas,dataframe,append,concat,Python,Pandas,Dataframe,Append,Concat,我有两个数据帧,如下所示: 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,我得到的结果数据帧都会

我有两个数据帧,如下所示:

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
中的两个原始列,并附加新值。是否有一种方法可以连接数据帧,而不必在之后删除额外的列?

您可以先筛选列,以便通过
子集进行追加:

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

或:

按注释编辑:

如果
df1
df2
中的列具有不同的列,请使用:


事实上,解决方案就在这个世界的一个模糊角落里。下面是要使用的代码:

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

鉴于上述示例,您是否可以编辑以显示您希望最终数据帧的外观?我很难想象,对不起。我已经编辑了这个问题。谢谢。这是我最初提问的方式。如果不是df1的所有列都在df2中,我该怎么办?然后在不匹配的列中得到
NaN
,如
(df1.append(df2))
。您需要以其他方式追加吗?您得到的结果看起来非常好,但是您必须对df1中而不是df2中的每一列执行此操作。如果
df1
的所有列都位于
df2
,请使用
print(pd.concat([df1,df2[df1.columns]])
如果没有,您可以通过
print(df1.columns.cross)找到公共列(df2.列))
print (df1.append(df2[['A','B']]))
    A   B
1  A1  B1
2  A2  B2
3  A3  B3
4  A4  B4
5  A5  B5
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])