【发布时间】:2021-08-31 19:31:55
【问题描述】:
我正在尝试找出每个 IMO 编号的航行和到达之间的时间差。
IMO Name State Datetime
8300327 SILVER FJORD Arrival 13/08/2021 04:51
8300327 SILVER FJORD Sailing 13/08/2021 22:59
8300327 SILVER FJORD Arrival 20/08/2021 10:52
8300327 SILVER FJORD Sailing 20/08/2021 20:24
9340738 FRAMFJORD Arrival 19/08/2021 11:05
9340738 FRAMFJORD Sailing 20/08/2021 17:32
对于上述数据帧,输出应该是
IMO Name State Datetime Time_int
8300327 SILVER FJORD Arrival 13/08/2021 04:51
8300327 SILVER FJORD Sailing 13/08/2021 22:59 18:08:00
8300327 SILVER FJORD Arrival 20/08/2021 10:52
8300327 SILVER FJORD Sailing 20/08/2021 20:24 09:32:00
9340738 FRAMFJORD Arrival 19/08/2021 11:05
9340738 FRAMFJORD Sailing 20/08/2021 17:32 06:27:00
我已经写了下面的计算代码
def dwell_calc(df):
if (df['State'] == "Sailing"):
val = df['Datetime'].diff().dt.seconds.div(3600).fillna(0).reset_index()
return val
# data.sort_values(['IMO', 'Datetime'], inplace=True)
cond2=(data['State']=='Sailing')
data.loc[cond2, 'time_int'] = dwell_calc(data)
print(data['time_int'])
我收到错误:
if (df['State'] == "Sailing"):
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
请帮助解决使用python查找时间间隔的方法
【问题讨论】:
-
最后一行不应该是 1day + 06:27:00 吗?
-
@not_speshal。我试图修复数据,但输入和输出不一样。查看我的编辑。
-
谢谢大家@not_speshal 是的,我查看了最后一个输出的日期变化,它应该增加 1 天。
标签: python pandas dataframe calculated-columns