删除一行中的重复项 pandas

Remove duplicates in a row pandas

我有一个df

Name  Symbol              Dummy
A     (BO),(BO),(AD),(TR)   2
B     (TV),(TV),(TV)        2
C     (HY)                  2
D     (UI)                  2

我需要 df 作为

Name  Symbol              Dummy
A     (BO),(AD),(TR)        2
B     (TV)                  2
C     (HY)                  2
D     (UI)                  2

尝试使用此功能但未按预期工作。

drop_duplicates

围绕定界符 , 拆分字符串,然后使用 dict.fromkeys 进行重复数据删除,这也保留了字符串的顺序,最后 join 围绕定界符 ,

df['Symbol'] = df['Symbol'].str.split(',').map(dict.fromkeys).str.join(',')

  Name          Symbol  Dummy
0    A  (BO),(AD),(TR)      2
1    B            (TV)      2
2    C            (HY)      2
3    D            (UI)      2

另一种方法

#原DF

index col1 col2
0 (BO),(BO),(AD),(TR) 2
df.col1 = df.col1.str.split(',').apply(lambda x: sorted(set(x), key=x.index)).str.join(',')
df

#output

index col1 col2
0 (BO),(AD),(TR) 2

如果值顺序不重要你可以简单地做:

df.col1 = df.col1.str.split(',').apply(lambda x: set(x)).str.join(',')
df

#output

index col1 col2
0 (AD),(BO),(TR) 2