如何通过唯一列值过滤pandas框架

9vw9lbht  于 2023-10-14  发布在  其他
关注(0)|答案(1)|浏览(101)

我有一个pandas数据框架与电子邮件,我想提取每行唯一的电子邮件。我尝试了下面的代码,但它不工作。它不返回对原始数据框的任何更改。以下是原始 Dataframe :

以下是需要的 Dataframe :

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”])

ltskdhd1

ltskdhd11#

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

相关问题