我有一个包含电子邮件的 pandas 数据框,我只想提取每行唯一的电子邮件。 我尝试了下面的代码,但它不起作用。它不会返回对原始数据框的任何更改。 这是原始数据框: 这是想要的数据框:
df = pd.DataFrame({'z':[1,2,3,4],'a':['[email protected]','[email protected]','[email protected]','[email protected]'], 'b':['[email protected]','[email protected]','[email protected]','[email protected]'],'c':['[email protected]','[email protected]','[email protected]','[email protected]']})
df.to_csv('../output/try.csv', index=False)
df = pd.read_csv('../output/try.csv')
df2 = df.drop_duplicates(subset=['a', 'b', 'c'])
df2.to_csv('../output/try2.csv', index=False)
我已经看到了适用于列中数字的解决方案,但我有字符串,并且由于某种原因它不适用于电子邮件字符串。 我尝试了以下代码,但它什么也没做。 df2 = df.drop_duplicates(子集=['a', 'b', 'c'])
DataFrame.drop_duplicates
将沿索引轴检查子集中的重复行,但这里您需要沿每行检查重复行,因此您必须沿列轴对每行应用此函数。
cols = ['a', 'b', 'c']
df[cols] = df[cols].apply(pd.Series.drop_duplicates, axis=1)
z a b c
0 1 [email protected] [email protected] [email protected]
1 2 [email protected] NaN NaN
2 3 [email protected] NaN NaN
3 4 [email protected] [email protected] NaN