我的数据框如下。
A B
1 1
4 1
5 1
6 2
8 3
15 4
我想将数据框格式化并转换为以下内容。
range(A) sum(B)
[0,4) 2
[5,9) 6
[10,14) 0
[15,19) 4
我试过了groupby+Grouper
,但我无法弄清楚如何装箱。
我可以问一下如何转换数据吗?
答案 0 :(得分:4)
您需要cut
参数right=False
才能包含groupby
的右边框:
感谢您John Galt添加参数labels
。
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