我有一个由两列组成的数据框:
查看数据框:
vehicles_stats[['_time','elapsed']].head()
输出:
_time elapsed
0 2020-10-28 21:06:39.797000+01:00 26
1 2020-10-28 16:12:38.357000+01:00 16
2 2020-10-28 19:16:38.737000+01:00 11
3 2020-10-29 11:58:43.122000+01:00 16
4 2020-10-28 20:38:39.294000+01:00 16
如何更改“已过去”列的类型,使其代表分钟? 然后,我需要从每条记录的_time值中减去这些分钟。
任何建议表示赞赏
答案 0 :(得分:0)
将to_datetime
与to_timedelta
一起使用,并减去Series.sub
:
df['new'] = pd.to_datetime(df['_time']).sub(pd.to_timedelta(df['elapsed'], unit='min'))
print (df)
_time elapsed new
0 2020-10-28 21:06:39.797000+01:00 26 2020-10-28 19:40:39.797
1 2020-10-28 16:12:38.357000+01:00 16 2020-10-28 14:56:38.357
2 2020-10-28 19:16:38.737000+01:00 11 2020-10-28 18:05:38.737
3 2020-10-29 11:58:43.122000+01:00 16 2020-10-29 10:42:43.122
4 2020-10-28 20:38:39.294000+01:00 16 2020-10-28 19:22:39.294
如果需要将列从分钟转换为timedelta:
df['elapsed'] = pd.to_timedelta(df['elapsed'], unit='min')
df['new'] = pd.to_datetime(df['_time']).sub(df['elapsed'])
print (df)
_time elapsed new
0 2020-10-28 21:06:39.797000+01:00 0 days 00:26:00 2020-10-28 19:40:39.797
1 2020-10-28 16:12:38.357000+01:00 0 days 00:16:00 2020-10-28 14:56:38.357
2 2020-10-28 19:16:38.737000+01:00 0 days 00:11:00 2020-10-28 18:05:38.737
3 2020-10-29 11:58:43.122000+01:00 0 days 00:16:00 2020-10-29 10:42:43.122
4 2020-10-28 20:38:39.294000+01:00 0 days 00:16:00 2020-10-28 19:22:39.294