如何将组#分配给pandas数据框中的一组行?

时间:2016-08-09 14:57:58

标签: python pandas dataframe

数据框有一个时间列,其int值从零开始。我想将数据框分组为100个组(例如),其中步骤为ts = df['time'].max()/100。一种天真的方法是测试'时间'列的每个值,如果大于t and小于t+ts,其中t是{{} 1}}向量,从np.linspace开始,到0结束。

以下是我的数据框:

df['time'].max()

1 个答案:

答案 0 :(得分:2)

您可以使用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对象上使用不同的方法。