python-pandas DataFrame:如何使用自定义方式剪切 dataframe ?

我想使用自己的规则将一个DataFrame切成几个 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

我将根据距离列的值剪切数据.例如,有一些bin [1,3),[3,8),[8,10),[10,10),如果数据在同一bin中的列距离,我将它们分成相同的组并计算列值的平均值或总和值.

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

如何将原始DataFrame切成几组(然后保存它们,对其进行处理…)?

最佳答案

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