Pandas - 合并 2 个数据帧,仅将第一个数据帧中的列作为输出
Pandas - Merge 2 dataframes, only with columns from the first dataframe as output
假设我有一个包含如下列的数据框:
A
B
C
X
F
另一个数据框有列:
A
J
L
B
C
如何将第二个数据框中的行添加到只有 5 列的第一个数据框中?我不希望 J 列和 L 列出现在最终数据框中。
还假设还有很多其他列我不想要,那么有没有办法不指定列名就可以做到这一点?这将是巨大的...
使用 Index.intersection
过滤来自 df2
的列 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]
假设我有一个包含如下列的数据框:
A | B | C | X | F |
---|
另一个数据框有列:
A | J | L | B | C |
---|
如何将第二个数据框中的行添加到只有 5 列的第一个数据框中?我不希望 J 列和 L 列出现在最终数据框中。
还假设还有很多其他列我不想要,那么有没有办法不指定列名就可以做到这一点?这将是巨大的...
使用 Index.intersection
过滤来自 df2
的列 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]