繁体   English   中英

如何使用 Pandas 从 CSV 文件中删除两个重复项?

[英]how to delete BOTH duplicates from a CSV file using Pandas?

我有两个需要比较的 CSV 文件。 EF 文件包含所有符合我们公司福利计划的用户。 UL 文件包含当前在我们系统中的所有用户。 当您将 EF 与 UL 进行比较时,所讨论的大多数“EmployeeId”都是重复的。 我正在尝试删除这两个重复项,因此我只剩下 EF 文件中不在 UL 文件中的用户。 我附上了到目前为止的内容。 我觉得这并不太复杂,我只是迷失了逻辑。

def merger(ef_in, ul_in):
    df_ef = pd.read_csv(ef_in, sep=',')
    df_ul = pd.read_csv(ul_in, sep=',')
    df = pd.concat(
        map(pd.read_csv, [ef_in, ul_in]), ignore_index=True)

   
    for i in df_ef["EmployeeId"]:
        if i in df_ul["EmployeeId"]:
            df_ef = df_ef.drop(df["EmployeeId"])

    print(df_ef)
    # df.to_csv("finalized.csv", header=True, index=False)


eff = "Test_Ready_EF.csv"
ull = "Test_Ready_UL.csv"

merger(eff, ull)

我玩过这个并用谷歌搜索。 我不确定如何删除两个重复项。 我希望我可以执行 pd.merge(),然后使用 df.drop_duplicates() 命中数据框,但这似乎不起作用。

您可以通过在drop_duplicates中将keep参数设置为False并通过EmployeeID子集来实现此目的,至少在 1.0 之后的所有 Pandas 版本中。

import pandas as pd

df_uf = pd.DataFrame({'EmployeeID': ['AAA', 'BBB', 'CCC', 'DDD', 'EEE'], 'Pizza Type': ['pepperoni', 'sausage', 'cheese', 'cheese', 'hates pizza'], 'Salary': [55, 67, 34, 56, 76]})
df_ef = pd.DataFrame({'EmployeeID': ['AAA', 'CCC', 'EEE'], 'Benefits': [1,0,1], 'Other Column': [1,2,3]})

df = pd.concat([df_uf, df_ef], axis = 0, ignore_index = True, sort = False)

df.drop_duplicates(subset = ['EmployeeID'], keep = False, inplace = True)

print(df)

 EmployeeID  Benefits  Other Column Pizza Type  Salary
4        BBB       NaN           NaN    sausage    67.0
6        DDD       NaN           NaN     cheese    56.0

暂无
暂无

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

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