首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pandas如何在dataframe中消除不同顺序的同值重复行

问pandas如何在dataframe中消除不同顺序的同值重复行
EN

Stack Overflow用户
提问于 2018-08-27 09:04:14
回答 2查看 392关注 0票数 0

如何去除df中的重复项?df只有1列。在这种情况下,"60,25“和"25,60”是一对重复的行。输出应该是新的df。对于每一对重复的行,保留的行格式为"A,B“,其中A< B,删除的行应为A>B。在这种情况下,应保留"25,60”和"80,123“。对于唯一行,它应该保持不变。

​

​

EN

回答 2

Stack Overflow用户

发布于 2018-08-27 09:15:10

IIUC,结合使用get_dummies和duplicated

代码语言:javascript
复制
df[~df.A.str.get_dummies(sep=',').duplicated()]
Out[956]: 
       A
0    A,C
1    A,B
4  X,Y,Z

数据输入

代码语言:javascript
复制
df
Out[957]: 
       A
0    A,C
1    A,B
2    C,A
3    B,A
4  X,Y,Z
5  Z,Y,X

更新操作将问题完全更改为不同的问题

代码语言:javascript
复制
newdf=df.A.str.get_dummies(sep=',')
newdf[~newdf.duplicated()].dot(newdf.columns+',').str[:-1]
Out[976]: 
0     25,60
1    123,37
dtype: object
票数 2
EN

Stack Overflow用户

发布于 2018-08-27 10:49:58

我会做一系列的事情。

  1. Use pandas.Series.str.split to split by commas
  2. Use apply(frozenset) to get a hashable以便我可以在keep='last'

中使用hashable

代码语言:javascript
复制
df[~df.A.str.split(',').apply(frozenset).duplicated(keep='last')]

        A
1  123,17
3  80,123
4   25,60
5   25,42

正在处理评论

代码语言:javascript
复制
df.A.apply(
    lambda x: tuple(sorted(map(int, x.split(','))))
).drop_duplicates().apply(
    lambda x: ','.join(map(str, x))
)

0     25,60
1    17,123
2    80,123
5     25,42
Name: A, dtype: object

设置

代码语言:javascript
复制
df = pd.DataFrame(dict(
    A='60,25 123,17 123,80 80,123 25,60 25,42'.split()
))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52031428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档