[英]How do I assign a group # to a set of rows in a pandas data frame?
数据框具有一个时间列,该列的int值从零开始。 我想将数据帧分为100组(例如),其中步骤为ts = df['time'].max()/100
。 一种简单的方法是测试'time'列的每个值是否大于t
and
小于t+ts
,其中t
是一个np.linspace
向量,该向量从0
开始并在df['time'].max()
。
我的数据框如下所示:
df.head()
0 1 2 3 time
0 1 1 1 1130165891 59559371
1 2 1 1 1158784502 88177982
2 2 1 1 1158838664 88232144
3 2 1 1 1158838931 88232411
4 2 1 1 1158839132 88232612
您可以使用pd.cut
生成组:
df.groupby(pd.cut(df['time'], 2)).mean()
Out:
0 1 2 3 time
time
(59530697.759, 73895991.5] 1 1 1 1130165891 59559371
(73895991.5, 88232612] 2 1 1 1158825307 88218787
由于数据集非常小,因此只有2个组,并且最少开始。 您可以更改组数。 除了传递组数外,您还可以传递断点(使用不带np.linspace的传递点)。
df.groupby(pd.cut(df['time'], [0, 6*10**7, np.inf], include_lowest=True)).mean()
Out:
0 1 2 3 time
time
[0, 60000000] 1 1 1 1130165891 59559371
(60000000, inf] 2 1 1 1158825307 88218787
在两个示例中,我均采用了均值的方法来向您展示其工作原理。 您可以对groupby对象使用其他方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.