Pandas GroupBy 列得到 'mode'

Pandas GroupBy columns to get 'mode'

作为 beloe 的数据集,我想聚合 'Name' 和 'Weeks' 以获得它们的模式。

我尝试了两种方法,但都没有用:

import pandas as pd
from io import StringIO

csvfile = StringIO("""
Name    Weeks   Sales
Amelia  202106  57
Amelia  202105  61
Amelia  202106  59
Amelia  202103  49
Amelia  202105  87
Amelia  202104  95
Elijah  202106  49
Elijah  202105  40
Elijah  202106  57
Elijah  202103  97
Elijah  202105  67
Elijah  202104  89
James   202106  66
James   202105  92
James   202106  57
James   202103  82
James   202105  53
James   202104  71""")

df = pd.read_csv(csvfile, sep = '\t', engine='python')

df['Weeks'] = df['Weeks'].astype(str)

# tried both but neither worked:
mode = df.groupby(['Name', 'Weeks']).agg({'Sales': ['mode']})
# or 
mode = df.groupby(df['Name', 'Weeks'])[['Sales']].mode()

正确的方法是什么?谢谢。

尝试:

from statistics import mode
mode = df.groupby(['Name', 'Weeks'])['Sales'].apply(mode)
Name    Weeks 
Amelia  202103    49
        202104    95
        202105    61
        202106    57
Elijah  202103    97
        202104    89
        202105    40
        202106    49
James   202103    82
        202104    71
        202105    92
        202106    66