Pandas - 合并两个数据框,仅输出第一个数据框的列。

3
假设我有一个包含以下列的数据框:
A B C X F
另一个数据框具有以下列:
A J L B C
如何将第二个数据框的行添加到只有5列的第一个数据框中?我不希望最终的数据框中包含J和L列。
还假设有许多其他我不想要的列,那么有没有一种方法可以不指定列名来实现这个目标?
1个回答

3
使用Index.intersection函数,通过df1.columns过滤出df2的列。
#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]

我修改了问题,如果有帮助的话。所以 df22 = df2[df2.columns.intersection(df1.columns)],然后 df = pd.concat([df1, df22], ignore_index=True)? - caasswa
我们基本上是想要 A | B | C | X | F,其中 A、B 和 C 作为行添加到 df1 中,但对于这些条目,X 和 F 可以只是 NaN。 - caasswa
@caasswa - 没错,你说得对。 - jezrael
1
如果你有3个数据框,其中df1是你想要的列,那么可以这样做:df = pd.concat([df1, df2, df3], ignore_index=True)[df1.columns],我猜对了吧? :) - caasswa
1
@caasswa - 是的,你说得对。 - jezrael

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接