2017-01-31 3 views
3

私は以下のデータフレームを持っています。パンダのビニングと変換

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を試してみましたが、私はどのようにビンに把握couldntの。

データの変換方法を尋ねることはできますか?あなたはパラメータgroupbyと右のビンを含まないためright=Falsecutが必要

答えて

4

は、パラメータlabelsを追加するという考えのためにあなたJohn Galtをありがとうございます。

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 
+1

pd.cut(df.A、[0、5、10、15、20]、right = False)に 'labels ='を 'pd.cut'に追加することもできます。 、ラベル= ['[0,4]'、 '[5,9]'、 '[10,14]'、 '[15,19]')) ' – Zero

+1

@JohnGalt - とても素敵なアイデアです。 。 – jezrael

関連する問題