我的数据框中有两列具有datetime64 [ns]值。我想从开始日期中减去结束日期,然后将该值放置在新列中?我该怎么办?
以下是我的数据示例:
StartedDate(Column1)
2018-09-02 02:54:39
2018-09-02 15:14:31
2018-09-02 18:04:35
2018-09-02 18:04:35
EndedDate(第2列)
208-09-02 15:20:15
2018-09-02 18:04:34
2018-09-02 18:11:15
2018-09-02 18:39:34
在excel中,它将日期转换为数字(例如43789,04)。我想对这些值执行相同的操作,然后将它们转换为此类数字,然后减去它们。但是,我发现用Python很难做到这一点。
我当前想要的输出格式为(12:25:36),而我希望它的格式为(43740.64-43740.12 = 0.52)
答案 0 :(得分:2)
不必像注释中提到的@Dan一样加上开始日期时间,因为要减去。
因此,将Series.dt.days
转换为时间增量,并添加Series.dt.seconds
除以86400
:
df['StartedDate'] = pd.to_datetime(df['StartedDate'])
df['EndedDate'] = pd.to_datetime(df['EndedDate'])
delta = df['EndedDate'] - df['StartedDate']
df['diff'] = delta.dt.days.astype(float) + (delta.dt.seconds.astype(float) / 86400)
print (df)
StartedDate EndedDate diff
0 2018-09-02 02:54:39 2018-09-02 15:20:15 0.517778
1 2018-09-02 15:14:31 2018-09-02 18:04:34 0.118090
2 2018-09-02 18:04:35 2018-09-02 18:11:15 0.004630
3 2018-09-02 18:04:35 2018-09-02 18:39:34 0.024294