python - Pandas 根据索引对列值进行分箱

标签 python pandas dataframe binning

<分区>

目前,我有一个 DataFrame,它包含人口的年龄和这些年龄的频率,如下所示:

      freq
 27    103
 28     43
 29     13
...    ...
 78     20
 79     13

年龄是DataFrame的索引。我想执行一些 Pandas 魔术,以便获得像这样的分箱 DataFrame:

           freq
 (20, 30]   308
 (30, 40]   111
 (40, 50]    85
 (50, 60]    58
 (60, 70]    63
 (70, 80]   101

因此,该指数现在由年龄间隔组成,而不是单个年龄,并且相应地对频率求和。我怎样才能做到这一点?

最佳答案

在使用cut 对DataFrame 的索引进行分箱后,您可以使用groupby。例如:

>>> df = pd.DataFrame({'freq': [2, 3, 5, 7, 11, 13]}, 
                      index=[22, 29, 30, 31,25, 42])

>>> df
    freq
22     2
29     3
30     5
31     7
25    11
42    13

然后:

>>> df.groupby(pd.cut(df.index, np.arange(20, 60, 10))).sum()
          freq
(20, 30]    21
(30, 40]     7
(40, 50]    13

np.arange(20, 60, 10) 定义将要使用的 bin;您可以根据“频率”列中的最大/最小值调整这些值。

关于python - Pandas 根据索引对列值进行分箱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33760900/

相关文章:

Python:创建空的 pandas 数据框并动态地将元素添加到其列中

python - 什么是适用于 Python 的良好 XML 流解析器?

python - 在 Pandas 中映射

python - 使用交互式平移和缩放制作 Altair map

python - 连接两个数据帧,其中列值(一组)是另一个数据帧的子集

python - 如何对列数未定义的数据框进行数学运算?

python - 需要帮助从 json 文件格式化 pandas 数据框

python - 如何在python中为非数字变量制作直方图

python - 发送电子邮件 : raise SMTPAuthenticationError(code, 时出错)

python - 如何安装 pyCurl?