如何在有效的pandas数据帧中分组分数列表并按日期分组

Nab*_*zir 3 python pivot-table dataframe pandas

我有分数数据,我想按自定义分数进行分组.

Id  Date          Score
1   2018-01-01    56
2   2018-01-01    72
3   2018-01-01    91
4   2018-01-01    67
5   2018-01-01    65
6   2018-01-02    75
7   2018-01-02    72
8   2018-01-02    91
9   2018-01-02    82
10  2018-01-02    81
Run Code Online (Sandbox Code Playgroud)

这是我的预期

 Date          <60    60-79   80-100
 2018-01-01      1        3        1
 2018-01-02      0        2        3
Run Code Online (Sandbox Code Playgroud)

我做的是

 result = pd.crosstab(df.Date, df.Score)
 result['<60'] = result['1']+ ... + result['59']
 result['60-79'] = result['60']+ ... + result['79']
 result['80-100'] = result['80']+ ... + result['100']
Run Code Online (Sandbox Code Playgroud)

然后我应该删掉很多专栏

有更好的方法吗?

jez*_*ael 6

使用groupbycutsize:

bins = [-np.inf, 60, 79, 100]
labels = ['<60','60-79','80-100']
df = (df.groupby([df['Date'], pd.cut(df['Score'], bins=bins, labels=labels)])
      .size()
      .unstack(fill_value=0))
print (df)
Score       <60  60-79  80-100
Date                          
2018-01-01    1      3       1
2018-01-02    0      2       3
Run Code Online (Sandbox Code Playgroud)