如何通过唯一列值过滤 pandas 数据框

问题描述 投票:0回答:1

我有一个包含电子邮件的 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'])

pandas dataframe distinct-values
1个回答
0
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.