繁体   English   中英

根据两个数据帧之间的差异生成数据帧

[英]Generating a dataframe based off the diff between two dataframes

我有 2 个看起来像这样的数据框

Df1 
City    Code    ColA    Col..Z
LA      LAA  
LA      LAB
LA      LAC


Df2 
Code    ColA    Col..Z
LA      LAA 
NY      NYA
CH      CH1

我正在尝试做的结果是

df3 
Code ColA   Col..Z
NY  NYA
CH  CH1

通常我会遍历 df2 中的每一行并说:

df3 = 如果 df2.row['Code'] 在 df1 中,则删除它。

但我想找到一种 pythonic pandas 的方式来做到这一点,而不是遍历数据帧。 我正在查看使用连接或合并的示例,但我似乎无法解决。

有一个可能相关的Pandas compare df 方法?:

df1 = pd.read_clipboard()
df1

df1

df2 = pd.read_clipboard()
df2

df2

df1.compare(df2).drop('self', axis=1, level=1).droplevel(1, axis=1)

df 比较差异

(我假设您的数据框中有错字,df2 中缺少 City col?)

要根据code列仅保留df2的不同项目,您可以使用drop_duplicates

df2[df2.code.isin(
    # the different values in df2's 'code' column
    pd.concat([df1.code, df2.code]).drop_duplicates(keep=False)
)]

Df3 = 如果 df2.row['Code'] 在 df1 中,则将其删除。 翻译成

df3 = df2[~df2['Code'].isin(df1['City'] ]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM