Python 如何将组#分配给数据帧中的一组行?
数据帧有一个时间列,其int值从零开始。我想将数据帧分成100组(例如),其中步骤为Python 如何将组#分配给数据帧中的一组行?,python,pandas,dataframe,Python,Pandas,Dataframe,数据帧有一个时间列,其int值从零开始。我想将数据帧分成100组(例如),其中步骤为ts=df['time'].max()/100。一种简单的方法是测试'time'列的每个值,如果它大于t并且小于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 1
ts=df['time'].max()/100
。一种简单的方法是测试'time'列的每个值,如果它大于t
并且小于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)
我在两个例子中都取了平均值,以向您展示它是如何工作的。您可以对groupby对象使用不同的方法。您可以使用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)
我在两个例子中都取了平均值,以向您展示它是如何工作的。您可以在groupby对象上使用不同的方法。!适合我,优雅!对我有用。