【发布时间】:2020-01-02 10:11:22
【问题描述】:
我有一个如下所示的数据框
df1 = pd.DataFrame({
'subject_id':[1,1,1,1,1,1,1,1,1,1,1],
'time_1' :['2173-04-03 12:35:00','2173-04-03 12:50:00','2173-04-03
12:59:00','2173-04-03 13:14:00','2173-04-03 13:37:00','2173-04-04
11:30:00','2173-04-05 16:00:00','2173-04-05 22:00:00','2173-04-06
04:00:00','2173-04-06 04:30:00','2173-04-06 08:00:00']
})
我想创建另一个名为tdiff 的列来计算时间差
这是我尝试过的
df1['time_1'] = pd.to_datetime(df1['time_1'])
df['time_2'] = df['time_1'].shift(-1)
df['tdiff'] = (df['time_2'] - df['time_1']).dt.total_seconds() / 3600
但这会产生如下所示的输出。如您所见,它从下一个日期中减去。相反,我想将时差限制在同一天。例如:如果Jan 15th 20:00:00 PM 是当天的最后一条记录,那么我希望tdiff 是4:00:00 (24:00:00: - 20:00:00)
我知道它正在发生,因为我正在将时间值转移到减去,并且很明显突出显示的行正在从下一个日期挑选记录。但是有没有办法避免这种情况但计算同一天记录之间的时间差?
我希望我的输出是这样的。此处 NaN 应替换为当前日期 (23:59:00)。如果你检查差异,你会得到一个想法
是否有任何现有的方法或 pandas 函数可以帮助我们做到这一点datewise timedelta?如何按日期移动值?
【问题讨论】:
-
有点不清楚你想要什么。你能告诉我们预期的输出吗?
-
下面给出的两个答案都非常好。我只能将一个答案标记为解决方案,所以我选择@anky_91 答案。尽管如此,SpghttCd 的答案也很高兴知道并解决了问题。
标签: python python-3.x pandas datetime python-datetime