2016-10-29 7 views
1

自分のルールを使ってDataFrameをいくつかのデータフレームにカットしたいと思っています。pandas DataFrame:カスタムウェイを使用してデータフレームをカットする方法は?

>>> data = pd.DataFrame({'distance':[1,2,3,4,5,6,7,8,9,10],'values':np.arange(0,1,0.1)}) 
>>> data 
    distance values 
0   1  0.0 
1   2  0.1 
2   3  0.2 
3   4  0.3 
4   5  0.4 
5   6  0.5 
6   7  0.6 
7   8  0.7 
8   9  0.8 
9  10  0.9 

私はdistance列の値に応じてdataカットします。例えば、いくつかのビン[1,3),[3,8),[8,10),[10,10+)があります、同じビン内のデータの列distance場合、私は同じグループにそれらを分離し、カラムvalues平均値や合計を計算value.Thatは、私はいくつかのグループに元のデータフレームをカットすることができますどのように

>>> data1 = data[lambda df:(df.distance >= 1) & (df.distance < 3)] 
>>> data1 
    distance values 
0   1  0.0 
1   2  0.1 
>>> np.mean(data1['values']) 
0.05 

です(そして、それらを保存し、それらを処理...)効率的に?

答えて

2

Pandas cutコマンド、この場合に便利です:

data['categories']=pd.cut(data['distance'],[-np.inf,1,3,8,10,np.inf],right=False) 
data.groupby('categories').mean() 

出力:

  distance values 
categories  
[-inf, 1) NaN  NaN 
[1, 3)  1.5  0.05 
[3, 8)  5.0  0.40 
[8, 10)  8.5  0.75 
[10, inf) 10.0 0.90 
関連する問題