数据框有一个时间列,其int值从零开始。我想将数据框分组为100个组(例如),其中步骤为ts = df['time'].max()/100
。一种天真的方法是测试'时间'列的每个值,如果大于t
and
小于t+ts
,其中t
是{{} 1}}向量,从np.linspace
开始,到0
结束。
以下是我的数据框:
df['time'].max()
答案 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对象上使用不同的方法。