我有一个长得像这样的Pandas数据框:
我想要创建一个新的列'Trip',它是一个整数,告诉我这是第几次旅行。在旅行开始的4小时内的所有记录都应该属于同一次旅行。结果应如下所示:
df = pd.DataFrame({})
df['Date'] = pd.to_datetime(np.arange(0,11), unit='h', origin='2018-08-01 00:00:00')
Date
0 2018-08-01 00:00:00
1 2018-08-01 01:00:00
2 2018-08-01 02:00:00
3 2018-08-01 03:00:00
4 2018-08-01 04:00:00
5 2018-08-01 05:00:00
6 2018-08-01 06:00:00
7 2018-08-01 07:00:00
8 2018-08-01 08:00:00
9 2018-08-01 09:00:00
10 2018-08-01 10:00:00
我想要创建一个新的列'Trip',它是一个整数,告诉我这是第几次旅行。在旅行开始的4小时内的所有记录都应该属于同一次旅行。结果应如下所示:
Date Trip
0 2018-08-01 00:00:00 1
1 2018-08-01 01:00:00 1
2 2018-08-01 02:00:00 1
3 2018-08-01 03:00:00 1
4 2018-08-01 04:00:00 1
5 2018-08-01 05:00:00 2
6 2018-08-01 06:00:00 2
7 2018-08-01 07:00:00 2
8 2018-08-01 08:00:00 2
9 2018-08-01 09:00:00 2
10 2018-08-01 10:00:00 3
你知道如何做到这一点吗?
'minute': [0, 15,30,40,50]}) df['Date'] = pd.to_datetime(df,format='%Y%m%d %H:%m')`,它会显示行程为1、1、3、5、5,而不是1、1、2、3、3。 - Jeroen
df['Trip'] = df.groupby('Trip').ngroup() +1
,然后我将检查它是否在所有情况下都有效。 - Jeroendf["Trip"] = df.apply(lambda x: ((x["Date"].hour - origin) // 4.0) + 1, axis=1)
操作吗?例如,对所有不同的索引执行此操作? - Jeroen