首页 > 解决方案 > Pandas - 合并 2 个数据帧,仅将第一个数据帧中的列作为输出

问题描述

假设我有一个数据框,其列如下:

一种 C X F

另一个数据框有列:

一种 Ĵ 大号 C

如何将第二个数据框中的行添加到只有 5 列的第一个?我不希望列 J 和 L 出现在最终数据框中。

还假设我不想要许多其他列,那么有没有办法在不指定列名的情况下做到这一点?会很庞大...

标签: pythonpandasdataframemerge

解决方案


用于Index.intersection过滤列df2by df1.columns

#if all columns from df1 are in df2
df22 = df2[df1.columns]
#if NOT all columns from df1 are in df2
df22 = df2[df2.columns.intersection(df1.columns)]

然后使用DataFrame.append

df = df1.append(df22, ignore_index=True)

或者concat

df = pd.concat([df1, df22], ignore_index=True)

另一种解决方案是在按列添加新行后进行过滤df1

df = pd.concat([df1, df2], ignore_index=True)[df1.columns]

推荐阅读