如何使用pandas.gropper将整数按间隔分组?

如何使用pandas.gropper将整数按间隔分组?,pandas,pivot-table,grouping,Pandas,Pivot Table,Grouping,熊猫。石斑鱼被认为只用于约会吗?或者它也可以用于整数 我想将熊猫.pandas.gropper与熊猫.pivot\u table结合使用。 下面是一个关于如何将pandas.gropper用于包含日期的列的示例: import pandas import numpy from datetime import datetime date_data_frame = pandas.DataFrame( { &qu

熊猫。石斑鱼被认为只用于约会吗?或者它也可以用于整数

我想将熊猫.pandas.gropper与熊猫.pivot\u table结合使用。 下面是一个关于如何将
pandas.gropper
用于包含
日期的列的示例:

import pandas
import numpy
from datetime import datetime

date_data_frame = pandas.DataFrame(
            {                
                "date": [
                    datetime(2019, 9, 1, 13, 0),
                    datetime(2019, 9, 1, 13, 5),
                    datetime(2019, 10, 1, 20, 0),
                    datetime(2019, 10, 3, 10, 0),
                    datetime(2019, 12, 2, 12, 0),
                    datetime(2019, 9, 2, 14, 0),
                ],
                "name": "Maria Maria Maria Maria Jane Carlos".split(),
                "value": [25, 9, 4, 3, 2, 8],
            }
        )

grouped_pivot_table = pandas.pivot_table(
    date_data_frame,
    index=[pandas.Grouper(key="date", freq="M")], #grouped entries to show as row headers
    columns='name',               #entries to show as column headers
    values='value',               #entries to aggregate and show as cells
    aggfunc=numpy.sum,            #aggregation function(s)
)

print(grouped_pivot_table)
现在让我们假设我没有日期,但是整数在1到100之间,我想把它们按10的间隔分组(1-10,11-20,…)。 如何使用
pandas.Grouper
指定分组的间隔

我尝试了freq=“10”,但没有成功:

import pandas
import numpy
from datetime import datetime
    
date_data_frame = pandas.DataFrame(
            {                
                "param": [
                    1,
                    5,
                    10,
                    15,
                    22,
                    33,
                ],
                "name": "Maria Maria Maria Maria Jane Carlos".split(),
                "value": [25, 9, 4, 3, 2, 8],
            }
)
    
grouped_pivot_table = pandas.pivot_table(
    date_data_frame,
    index=[pandas.Grouper(key="param", freq="10")], #grouped entries to show as row headers
    columns='name',               #entries to show as column headers
    values='value',               #entries to aggregate and show as cells
    aggfunc=numpy.sum,            #aggregation function(s)
)
    
print(grouped_pivot_table)

如果pandas.Grouper无法实现这一点,那么我应该使用什么来对数据透视表的参数索引进行分组呢?

可能的想法是使用整数除法,我认为
Grouper
只处理日期时间:

grouped_pivot_table = pandas.pivot_table(
    date_data_frame,
    index= (date_data_frame["param"] - 1) // 10, #grouped entries to show as row headers
    columns='name',               #entries to show as column headers
    values='value',               #entries to aggregate and show as cells
    aggfunc=numpy.sum,            #aggregation function(s)
)
    
print(grouped_pivot_table)
name   Carlos  Jane  Maria
param                     
0         NaN   NaN   34.0
1         NaN   NaN    7.0
2         NaN   2.0    NaN
3         8.0   NaN    NaN
或与右侧的关闭间隔一起使用:

bins = range(0, date_data_frame["param"].max() // 10 * 10 + 20, 10)
labels = ['{}-{}'.format(i + 1, j) for i, j in zip(bins[:-1], bins[1:])]

grouped_pivot_table = pandas.pivot_table(
    date_data_frame,
    #grouped entries to show as row headers
    index= pd.cut(date_data_frame["param"], bins=bins, labels=labels), 
    columns='name',               #entries to show as column headers
    values='value',               #entries to aggregate and show as cells
    aggfunc=numpy.sum,            #aggregation function(s)
)
    
print(grouped_pivot_table)
name   Carlos  Jane  Maria
param                     
1-10      NaN   NaN   38.0
11-20     NaN   NaN    3.0
21-30     NaN   2.0    NaN
31-40     8.0   NaN    NaN
或不(
right=False
参数):

bins = range(0, date_data_frame["param"].max() // 10 * 10 + 20, 10)
labels = ['{}-{}'.format(i + 1, j) for i, j in zip(bins[:-1], bins[1:])]

grouped_pivot_table = pandas.pivot_table(
    date_data_frame,
    #grouped entries to show as row headers
    index= pd.cut(date_data_frame["param"], bins=bins, labels=labels, right=False), 
    columns='name',               #entries to show as column headers
    values='value',               #entries to aggregate and show as cells
    aggfunc=numpy.sum,            #aggregation function(s)
)
    
print(grouped_pivot_table)
name   Carlos  Jane  Maria
param                     
1-10      NaN   NaN   34.0
11-20     NaN   NaN    7.0
21-30     NaN   2.0    NaN
31-40     8.0   NaN    NaN