在groupby()和transform()之后进行过滤

时间:2019-08-22 11:28:27

标签: python python-3.x pandas pandas-groupby

我有以下数据框:

import pandas as pd

df = pd.DataFrame({
    'name': ['Mason', 'Ali', 'Si', 'Pedram'],
    'continent': ['Europe', 'Asia', 'Asia', 'Asia'],
    'blood_type': ['AB', 'O+', 'AB', 'AB']
})

name    continent   blood_type
0   Mason   Europe  AB
1   Ali     Asia    O+
2   Si      Asia    AB
3   Pedram  Asia    AB

分组和计数后,我有了一个新的数据框:

new_df = df.groupby(['continent', 'blood_type']).count()

                         name
continent   blood_type  
Asia        AB           2
            O+           1
Europe      AB           1

我想在每个“大陆”(例如“亚洲”和“欧洲”)中查找并记录“名称”列的最大值: 这就是我所做的:

new_df["max"] = new_df.groupby("continent")["name"].transform(max)

                        name    max
continent   blood_type      
Asia        AB          2       2
            O+          1       2
Europe      AB          1       1

还有更好的方法吗? 我还需要以下结果以仅查看每个“大陆”中“名称”为最大值(与“最大值”相同)的行:

                        name    max
continent   blood_type      
Asia        AB          2       2
Europe      AB          1       1

我很确定应该有一种更容易的方法。请帮帮我:)

0 个答案:

没有答案