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
作为 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