熊猫Groupby价值范围


92

大熊猫中是否有一种简单的方法可以groupby按一定范围的值增量进行调用?例如下面给出的示例,我可以B0.155增量方式对列进行分组和分组,以便例如将列B中的前几对分组划分为'0-0.155、0.155-0.31 ...之间的范围。

import numpy as np
import pandas as pd
df=pd.DataFrame({'A':np.random.random(20),'B':np.random.random(20)})

     A         B
0  0.383493  0.250785
1  0.572949  0.139555
2  0.652391  0.401983
3  0.214145  0.696935
4  0.848551  0.516692

或者,我可以先按这些增量将数据分类到新的列中,然后再使用它groupby来确定在列中可能适用的任何相关统计数据A

Answers:


132

您可能对pd.cut

>>> df.groupby(pd.cut(df["B"], np.arange(0, 1.0+0.155, 0.155))).sum()
                      A         B
B                                
(0, 0.155]     2.775458  0.246394
(0.155, 0.31]  1.123989  0.471618
(0.31, 0.465]  2.051814  1.882763
(0.465, 0.62]  2.277960  1.528492
(0.62, 0.775]  1.577419  2.810723
(0.775, 0.93]  0.535100  1.694955
(0.93, 1.085]       NaN       NaN

[7 rows x 2 columns]

11
我可以对多个维度执行此操作吗?本质上是同时按两个值分组?
madsthaks

13

试试这个:

df = df.sort('B')
bins =  np.arange(0,1.0,0.155)
ind = np.digitize(df['B'],bins)

print df.groupby(ind).head()

当然,您不仅可以在组上使用任何功能head

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.