仅将匹配的列追加到数据框

时间:2019-04-05 17:27:47

标签: python pandas dataframe

我有一种“主”数据框,我只想将另一个数据框中的匹配列附加到

df:
  A  B  C
  1  2  3

df_to_append:
  A  B  C  D  E
  6  7  8  9  0

问题是当我使用df.append()时,它还会将不匹配的列附加到df。

df = df.append(df_to_append, ignore_index=True)
Out:
A  B  C   D   E
1  2  3  NaN NaN
6  7  8   9   0

但是我想要的输出是删除D和E列,因为它们不是原始数据帧的一部分吗?也许我需要使用pd.concat?我认为我无法使用pd.merge,因为我没有可以合并的唯一内容。

3 个答案:

答案 0 :(得分:3)

使用concat join='inner

pd.concat([df,df_to_append],join='inner')
Out[162]: 
   A  B  C
0  1  2  3
0  6  7  8

答案 1 :(得分:2)

只需选择两个df共有的列:

df.append(df_to_append[df.columns], ignore_index=True)

答案 2 :(得分:1)

最简单的方法是使用df.columns获取两个数据框共有的列列表,但是如果您不知道所有原始列都包含在df_to_append中,那么您需要找到两个集合的交集:

cols = list(set(df.columns) & set(df_to_append.columns)) 
df.append(df_to_append[cols], ignore_index=True)