【发布时间】:2021-05-05 21:41:33
【问题描述】:
我有一个如下所示的数据框:
Air-line City Time ID
0 easyJet London 20:40 1
1 airberlin Berlin 10:30 2
2 Emarite Dubai 21:45 3
3 Qatar Airways Newyork 10:30 4
4 easyJet London 20:46 5
5 airberlin Berlin 10:34 6
.
.
.
.
99 Qatar Airways London 20:40 13
100 airberlin Berlin 10:32 20
我想要做的是使用 groupby 并根据列 ID 从列“Air-lines”、“City”和“Time”组成一个组,以更改列 ID 中的值。因此,Air-line、City 和 Time 中具有相同值的行应该具有相同的 ID。为此,我有以下代码:
df['ID'] = df.groupby(['Air-line','City','Time'])['ID'].transform('first')
但问题是我想更改代码,以便不仅包含“时间”列中的确切值,还应包含 +6 或 -6 分钟之间的差值。
我的期望是这样的:
Air-line City Time ID
0 easyJet London 20:40 1
1 airberlin Berlin 10:30 2
2 Emarite Dubai 21:45 3
3 Qatar Airways Newyork 10:30 4
4 easyJet London 20:46 1
5 airberlin Berlin 10:34 2
.
.
.
.
99 Qatar Airways London 20:40 13
100 airberlin Berlin 10:32 2
你能告诉我如何添加这个条件吗?任何帮助将不胜感激。 非常感谢
【问题讨论】:
-
考虑以 6 分钟的步长将时间列设为分类。然后分组将按预期工作。
-
@MaximIvanov 你能告诉我应该使用哪个函数吗?我对熊猫不是很熟悉
标签: python pandas conditional-statements pandas-groupby