繁体   English   中英

如何为熊猫数据框中的一组行分配组号?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM