python - 检查一列中具有相同值的记录是否始终相同
问题描述
我有一个带有约 100 万条记录的 pandas df。df 有 80 多列,其中一列是asset_id。我想创建所有记录的子集,这些记录具有重复的asset_ids,但在至少一个其他列中具有不同的值。
例子:
df = pd.DataFrame({"asset_id": [1,1,1,2,2,3,4,5,5], "Name":["Canola", "Canola", "Canola", "Precision", "Precision", "Explore", "Testing", "Conda", "Conda Inc"], "Country":["CAN", "CAN", "USA", "CAN", "CAN", "USA", "CAN", "USA", "USA"]})
asset_id Name Country
1 Canola CAN
1 Canola CAN
1 Canola USA
2 Precision CAN
2 Precision CAN
3 Explore USA
4 Testing CAN
5 Conda USA
5 Conda Inc USA
我希望结果表如下所示:
asset_id Name Country
1 Canola CAN
1 Canola USA
5 Conda USA
5 Conda Inc USA
提前感谢所有帮助!
解决方案
您可以直接过滤掉具有多个Name
或多个的组,Country
然后删除任何剩余的重复项:
df.groupby('asset_id').filter(lambda x: (x.Name.nunique()>1) | (x.Country.nunique()>1)).drop_duplicates()
输出:
asset_id Name Country
0 1 Canola CAN
2 1 Canola USA
7 5 Conda USA
8 5 Conda Inc USA
推荐阅读
- html - 我的背景图片不起作用
- sql - 将帖子从 M1 AW 博客转移到 M2 Amasty Blog Pro
- java - spring 中嵌套配置属性的前缀
- solr - SolrJ 和 LocalDate 和 LocalDateTime
- python-3.x - Tensorflow 对象检测 API 中的错误
- c# - ASP.NET Core,将 html 元素值与 c# 变量链接
- .net - Azure .NET API - MissingMethodException
- javascript - JQuery hide()/show() 在 FF/IE 但不是 Chrome
- node.js - 异步和蒸汽写入文件有什么区别?
- vb.net - vb.net 读取配置文件