【发布时间】:2021-05-10 13:38:00
【问题描述】:
我有一个如下所示的数据框:
ID time city transport
0 1 10:20:00 London car
1 20 08:50:20 Berlin air plane
2 44 21:10:00 Paris train
3 32 10:24:00 Rome car
4 56 08:53:10 Berlin air plane
5 90 21:8:00 Paris train
.
.
.
1009 446 10:21:24 London car
我想对这些数据进行分组,以便“城市”和“交通”中的相同值但时间差为 +3 分钟或 -3 分钟时应该具有相同的“ID”。
我已经尝试过这样的 pd.Grouper() 但没有用:
df['time'] = pd.to_datetime(df['time'])
df['ID'] = df.groupby([pd.Grouper(key= 'time',freq ='3min'),'city','transport'])['ID'].transform('first')
输出是我没有任何更改的第一个数据帧。一个原因可能是通过使用 .datetime 日期也将被添加到“时间”中,并且因为我的数据非常大,日期会有所不同并且 groupby 不起作用。 我无法弄清楚如何在使用 groupby 并且不将 DATE 添加到“时间”列时添加时间间隔(+3 分钟或 -3 分钟)。
我期待的是这样的:
ID time city transport
0 1 10:20:00 London car
1 20 08:50:20 Berlin air plane
2 44 21:10:00 Paris train
3 32 10:24:00 Rome car
4 20 08:53:10 Berlin air plane
5 44 21:8:00 Paris train
.
.
.
1009 1 10:21:24 London car
我一直在为这个问题苦苦挣扎,我非常感谢任何帮助。 提前致谢
【问题讨论】:
标签: python pandas dataframe datetime group-by