连续删除重复物

发布于 2025-02-02 12:49:18 字数 448 浏览 3 评论 0原文

我有一个DF,

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

我需要

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

使用此功能尝试的DF,但无法按预期工作。

drop_duplicates

I have a df

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

I need df as

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

Tried with this function but not working as expected.

drop_duplicates

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦开始←不甜 2025-02-09 12:49:18

将围绕定界符的字符串分开,然后使用dict.fromkeys折扣,该字符串还保留了字符串顺序,最后aing> join>围绕分界线 code>,

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

Split the strings around delimiter ,, then dedupe using dict.fromkeys which also preserves the order of strings, finally join around delimiter ,

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
萌面超妹 2025-02-09 12:49:18

另一种方法

#original df

indexcol1col2
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

indexcol1 col1col2 col2
0(bo),(( AD),(tr)2

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

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

#output

indexcol1 col1col2
0(ad),(bo),(tr)2

Another method

#original DF

indexcol1col2
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

indexcol1col2
0(BO),(AD),(TR)2

If values order not important you can simply do:

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

#output

indexcol1col2
0(AD),(BO),(TR)2
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文