是否有一行代码可以运行以根据groupby从一列中获取唯一值?

时间:2019-03-28 09:58:36

标签: python pandas group-by jupyter

我已对df进行了分组,以便根据其国家/地区代码对列进行分组。即:

DataGroup = df.groupby('COUNTRY_CODE').apply(lambda x: x.sort_values('Name'))
DataGroup

并且我已经根据所属的国家/地区代码对所有列进行了分组。现在,我想从每个“国家/地区代码”组的“名称”列中获取唯一的名称,以便例如在“英国”中,如果该列包含名称:['John','Mary','Fatema','John' ],如何仅在df列中显示唯一值?

希望这有意义吗?

1 个答案:

答案 0 :(得分:0)

是的,您可以通过使用drop_duplicates并指定要检查的子集来实现:DataGroup.drop_duplicates(subset=["COUNTRY_CODE", "Name"])

完整示例:

import pandas as pd
df = pd.DataFrame([("NO", "John"),
                   ("NO", "Jane"),
                   ("NO", "John"),
                   ("SE", "Ville")], columns=["COUNTRY_CODE","Name"])
DataGroup = df.groupby('COUNTRY_CODE').apply(lambda x: x.sort_values('Name'))
print(DataGroup)
DataGroup = DataGroup.drop_duplicates(subset=["COUNTRY_CODE", "Name"])
print(DataGroup)

Output:
               COUNTRY_CODE   Name
COUNTRY_CODE                      
NO           1           NO   Jane
             0           NO   John
             2           NO   John
SE           3           SE  Ville
               COUNTRY_CODE   Name
COUNTRY_CODE                      
NO           1           NO   Jane
             0           NO   John
SE           3           SE  Ville