Pandas:使用agg值的groupby分位数

2024-04-24 12:18:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着按分位数对数值进行分组,并为分位数范围内的值的总和创建列。下面是一个简化的、可复制的示例:

    raw_data = {'female': [0, 1, 0, 1, 0, 1, 0, 1],
        'male': [1, 0, 1, 0, 1, 0, 1, 0],
        'number': [25000, 34000, 48600, 22000, 50000, 21000, 29000, 36000]}
df = pd.DataFrame(raw_data, columns = ['female', 'male', 'number'])
df

    female  male    number
  0 0       1       25000
  1 1       0       34000
  2 0       1       48600
  3 1       0       22000
  4 0       1       50000
  5 1       0       21000
  6 0       1       29000
  7 1       0       36000

实际上,我正努力实现这一点:

^{pr2}$

但是在这个数据框中显示了两个新列。一个代表属于相应分位数带的男性和女性的总和。在

最初我认为这应该是一个groupby,并附加.quantile([values]),然后.agg({'male': 'sum', 'female':'sum'}) 但这不管用。我想达到的目标能实现吗?在


Tags: columns示例numberdataframedfdatarawmale
1条回答
网友
1楼 · 发布于 2024-04-24 12:18:22

要使用pd.qcut创建分组:

qs = pd.qcut(df.number, [0, .1, .2, .3, .4, .5, 1], ['q%d' % i for i in xrange(6)])
qs

0    q2
1    q5
2    q5
3    q1
4    q5
5    q0
6    q4
7    q5
Name: number, dtype: category
Categories (6, object): [q0 < q1 < q2 < q3 < q4 < q5]

然后groupby和{}

^{pr2}$

enter image description here

相关问题 更多 >