[英]Pandas Groupby Range of Values
Is there an easy method in pandas to invoke groupby
on a range of values increments? pandas 中是否有一种简单的方法可以在一系列值增量上调用groupby
? For instance given the example below can I bin and group column B
with a 0.155
increment so that for example, the first couple of groups in column B
are divided into ranges between '0 - 0.155, 0.155 - 0.31 ...`例如,在下面的示例中,我可以以0.155
增量对B
列进行分组和分组,例如, 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
Alternatively I could first categorize the data by those increments into a new column and subsequently use groupby
to determine any relevant statistics that may be applicable in column A
?或者,我可以首先按这些增量将数据分类到一个新列中,然后使用groupby
来确定可能适用于A
列的任何相关统计数据?
You might be interested in pd.cut
:您可能对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]
Try this:尝试这个:
df = df.sort_values('B')
bins = np.arange(0, 1.0, 0.155)
ind = np.digitize(df['B'], bins)
print df.groupby(ind).head()
Of course you can use any function on the groups not just head
.当然,您可以对组使用任何函数,而不仅仅是head
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.