关于python:在熊猫中进行分类和转换

Binning and transforming in pandas

我有下面的数据框架。

1
2
3
4
5
6
7
A  B
1  1
4  1
5  1
6  2
8  3
15 4

我想把数据帧分块并转换到下面。

1
2
3
4
5
range(A) sum(B)
[0,4)    2
[5,9)    6
[10,14)  0
[15,19)  4

我试了一下groupby+Grouper,但我不知道怎么扔垃圾。

我能问一下如何转换数据吗?


您需要带参数right=Falsecut,因为不包括带groupby的右仓:

感谢John Galt提出的添加参数labels的想法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
print (pd.cut(df['A'],
              bins=[0, 5, 10, 15, 20],
              labels=['[0,4)', '[5,9)', '[10,14)', '[15,19)'],
              right=False))
0      [0,4)
1      [0,4)
2      [5,9)
3      [5,9)
4      [5,9)
5    [15,19)
Name: A, dtype: category

df = df.groupby([pd.cut(df['A'], bins=[0, 5, 10, 15, 20],
                        labels=['[0,4)', '[5,9)', '[10,14)', '[15,19)'],
                        right=False)])
       .B.sum()
       .fillna(0)
       .reset_index()

df.columns = ['range(A)','sum(B)']
print (df)
  range(A)  sum(B)
0    [0,4)     2.0
1    [5,9)     6.0
2  [10,14)     0.0
3  [15,19)     4.0