【发布时间】:2018-08-25 23:26:24
【问题描述】:
有没有办法在 pandas 中进行合并,限制你想看到的列?
我有什么:
df1
ID Col1 Col2 Col3 Col4
1 1 1 1 D
2 A C C 4
3 B B B d
4 X 2 3 6
df2
ID ColA ColB ColC ColD
1 1 1 1 D
2 A C X 4
3 B B Y d
我想要什么:
df_final
ID ColA ColB ColC ColD
1 NA NA NA NA
2 A C X 4
3 B B Y d
4 NA NA NA NA
我想对两个数据框进行左连接(保留 df1 中的所有 ID),但我只想保留 df2 中的列。如果 df1 中的 Col3 是 C 或 B,我也只想要值。
以下工作,但生成的 df 包括来自两个 dfs 的所有列。 我可以添加第三行以仅查看我想要的列,但这是一个简单的示例。实际上,我有更大的数据集,并且很难手动输入我想要保留的所有列名。
df=pd.merge(df1,df2,how='left',on='ID')
df_final=df[df['Col3'].isin['C','B']]
等效的 SQL 是
create table df_final as
select b.*
from df1 a
left join df2 b
on a.ID=b.ID
where a.Col3 in ('C','B')
【问题讨论】:
标签: python pandas dataframe merge