首页 > 解决方案 > 检查一列中具有相同值的记录是否始终相同

问题描述

我有一个带有约 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

提前感谢所有帮助!

标签: pythonpandas

解决方案


您可以直接过滤掉具有多个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

推荐阅读