我有一个这样的dataframe:
import pandas as pd
records = [{'Name':'John', 'Country':'Canada'}, {'Name':'John', 'Country':'Canada'},
{'Name':'Mary', 'Country':'US'}, {'Name':'Mary', 'Country':'Canada'},
{'Name':'Mary', 'Country':'US'}, {'Name':'Stan', 'Country':'UK'},
{'Name':'Stan', 'Country':'UK'}]
df = pd.DataFrame(records)
df
Name Country
0 John Canada
1 John Canada
2 Mary US
3 Mary Canada
4 Mary US
5 Stan UK
6 Stan UK
我想测试具有不同国家/地区值的名称。在这种情况下,我只想看到玛丽,因为她在国家列中有美国和加拿大。我可以排除约翰和斯坦,因为他们的记录都是同一个国家的。
有什么办法可以做到这一点吗?
2条答案
按热度按时间zbsbpyhn1#
第一步是找到具有超过1个唯一
Country
的名称,然后您可以在dataframe上使用loc
来过滤这些值。方法一:
groupby
方法二:
drop_duplicates
和value_counts
您可以遵循相同的逻辑,但使用
drop_duplicates
和value_counts
而不是groupby:方法三:
drop_duplicates
和duplicated
注意:这将给予略有不同的结果:你只会看到玛丽的独特价值观,这可能是也可能不是所希望的…
您可以删除原始帧中的重复项,并仅返回在已消除重复项的帧中具有多个条目的名称:
abithluo2#
首先,你可以按
Name
列分组,然后将Country
列组合成列表。然后检查此列表中的值是否都相同。此外,您可以使用布尔索引来选择具有不同值的行。