首页 / PYTHON / python-检测几乎重复的行
python-检测几乎重复的行
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-检测几乎重复的行,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1954字,纯文字阅读大概需要3分钟。
内容图文
![python-检测几乎重复的行](/upload/InfoBanner/zyjiaocheng/685/b87497a8d43e42da80fef13768508d33.jpg)
假设我有一个表,其中包含日期和每个日期的值(加上其他列).
我可以通过使用查找同一天具有相同值的行
data.duplicated(subset=["VALUE", "DAY"], keep=False)
现在,假设我要允许一天减少1或2天,值最多减少10天,我该怎么做?
例:
DAY MTH YYY VALUE NAME
22 9 2016 8.25 John
22 9 2016 43 John
6 11 2016 28.25 Mary
2 10 2016 50 George
23 11 2016 90 George
23 10 2016 30 Jenn
24 8 2016 10 Mike
24 9 2016 10 Mike
24 10 2016 10 Mike
24 11 2016 10 Mike
13 9 2016 170 Kathie
13 10 2016 170 Kathie
13 11 2016 160 Kathie
8 9 2016 16 Gina
9 10 2016 16 Gina
8 11 2016 16 Gina
16 11 2016 25 Ross
21 11 2016 45 Ross
23 9 2016 50 Shari
23 10 2016 50 Shari
23 11 2016 50 Shari
使用上面的代码,我可以找到:
DAY MTH YYY VALUE NAME
24 8 2016 10 Mike
24 9 2016 10 Mike
24 10 2016 10 Mike
24 11 2016 10 Mike
23 9 2016 50 Shari
23 10 2016 50 Shari
23 11 2016 50 Shari
但是,我还要在8月8日,9月9日和10月8日检测Gina的值16,因为它们具有相同的值,尽管不是同一天,但也只有一天的时间.
同样,我想在9月13日,10月13日和11月13日检测Kathie的值,因为该值仅差10.
我怎样才能做到这一点?
解决方法:
使用numpy和三角形索引来映射所有组合
day = df.DAY.values
val = df.VALUE.values
i, j = np.triu_indices(len(df), k=1)
c1 = np.abs(day[i] - day[j]) < 2
c2 = np.abs(val[i] - val[j]) < 10
c = c1 & c2
df.iloc[np.unique(np.append(i[c], j[c]))]
DAY MTH YYY VALUE NAME
1 22 9 2016 43.0 John
6 24 8 2016 10.0 Mike
7 24 9 2016 10.0 Mike
8 24 10 2016 10.0 Mike
9 24 11 2016 10.0 Mike
10 13 9 2016 170.0 Kathie
11 13 10 2016 170.0 Kathie
13 8 9 2016 16.0 Gina
14 9 10 2016 16.0 Gina
15 8 11 2016 16.0 Gina
17 21 11 2016 45.0 Ross
18 23 9 2016 50.0 Shari
19 23 10 2016 50.0 Shari
20 23 11 2016 50.0 Shari
内容总结
以上是互联网集市为您收集整理的python-检测几乎重复的行全部内容,希望文章能够帮你解决python-检测几乎重复的行所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。
来源:【匿名】