pandas集团通过价值的范围
有一个简单的方法在pandas调用groupby
值的增量范围? 例如,考虑到下面的例子,我可以用0.155
增量对B
列进行分组和列组化,以便例如列B
中的第一对组被划分成0, -0.155, 0.155 - 0.31 ...
到0, -0.155, 0.155 - 0.31 ...
之间的范围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)}) AB 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
列的相关统计数据?
您可能对pd.cut
感兴趣:
>>> df.groupby(pd.cut(df["B"], np.arange(0, 1.0+0.155, 0.155))).sum() AB 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]
尝试这个:
df = df.sort('B') bins = np.arange(0,1.0,0.155) ind = np.digitize(df['B'],bins) print df.groupby(ind).head()
当然,你可以使用组的任何function,而不仅仅是head
。