在熊猫中进行分类和转换

时间:2017-01-31 09:27:19

标签: python pandas dataframe

我的数据框如下。

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,但我无法弄清楚如何装箱。

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

1 个答案:

答案 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