2016-10-29 33 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 
相關問題