python – 使用pandas对组进行分组和比较
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 使用pandas对组进行分组和比较,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2100字,纯文字阅读大概需要4分钟。
内容图文
![python – 使用pandas对组进行分组和比较](/upload/InfoBanner/zyjiaocheng/797/709361887d7349c2837355034ad187ce.jpg)
我的数据看起来像:
Identifier Category1 Category2 Category3 Category4 Category5
1000 foo bat 678 a.x ld
1000 foo bat 78 l.o op
1000 coo cat 678 p.o kt
1001 coo sat 89 a.x hd
1001 foo bat 78 l.o op
1002 foo bat 678 a.x ld
1002 foo bat 78 l.o op
1002 coo cat 678 p.o kt
我想要做的是比较1000到1001和1002,依此类推.我希望代码给出的输出是:1000与1002相同.因此,我想要使用的方法是:
>首先将所有标识符项分组到单独的数据帧中(可能?).例如,df1将是属于标识符1000的所有行,df2将是属于标识符1002的所有行.(**请注意,我希望代码自己执行此操作,因为有数百万行,而不是我编写代码手动比较标识符**).我尝试过使用pandas的groupby功能,它可以很好地进行分组,但后来我不知道如何比较这些组.
>比较每个组/子数据帧.
我想到的一种方法是将特定标识符的每一行读入数组/向量,并使用比较度量(曼哈顿距离,余弦相似性等)比较数组/向量.
感谢任何帮助,我是Python的新手.提前致谢!
解决方法:
您可以执行以下操作:
import pandas as pd
input_file = pd.read_csv("input.csv")
columns = ['Category1','Category2','Category3','Category4','Category5']
duplicate_entries = {}
for group in input_file.groupby('Identifier'):
# transforming to tuples so that it can be used as keys on a dict
lines = [tuple(y) for y in group[1].loc[:,columns].values.tolist()]
key = tuple(lines)
if key not in duplicate_entries:
duplicate_entries[key] = []
duplicate_entries[key].append(group[0])
然后,duplicate_entries值将包含重复标识符的列表
duplicate_entries.values()
> [[1000, 1002], [1001]]
编辑:
要仅获取具有重复项的条目,您可以使用以下内容:
all_dup = [dup for dup in duplicate_entries if len(dup) > 1]
解释索引(抱歉,我之前没有解释过):迭代df.groupby结果给出一个元组,其中第一个条目是组的键(在这种情况下,它将是’标识符’),第二个条目是是一系列分组的数据帧.因此,要获取包含重复条目的行,我们将使用[1]并在[0]处找到该组的“标识符”.因为在duplicate_entries数组中我们想要该条目的标识符,所以使用group [0]会得到我们的信息.
内容总结
以上是互联网集市为您收集整理的python – 使用pandas对组进行分组和比较全部内容,希望文章能够帮你解决python – 使用pandas对组进行分组和比较所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。