[英]How to delete an exact duplicates in a column in csv using python pandas
[英]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.