我正在尝试将日期列和总耗用时间列合并到一个日期时间列中。
我有一个pandas数据框,如下所示:
calendarid actualdeparturetime actualtriptime
2014-01-01 360.066667 26.716667
2014-01-01 384.050000 19.516667
2014-01-01 406.733333 21.900000
2014-01-01 424.850000 17.550000
2014-01-01 444.666667 23.100000
实际出发时间列是每天经过的总分钟数。 我想将数据帧转换为如下所示:
actualdeparturetime actualtriptime
2014-01-01 06:00:04 26.716667
2014-01-01 06:24:03 19.516667
2014-01-01 06:46:44 21.900000
2014-01-01 07:04:51 17.550000
2014-01-01 07:24:40 23.100000
我已经尝试了几种技术,包括timedelta和使用csv数据解析器,但我仍在学习,似乎无法自己解决这个问题。有人可以帮忙吗?
我的最终目标是将数据汇总为每天30分钟的时间间隔,然后取每个时间间隔内实际旅行时间的平均值。我假设转换为datetimeindex我可以在这些假设下重新采样数据。但是,如果有更好的方法,请告诉我。
答案 0 :(得分:1)
使用astype("timedelta64[m]")
In [608]: df['calendarid'] + df['actualdeparturetime'].astype("timedelta64[m]")
Out[608]:
0 2014-01-01 06:00:00
1 2014-01-01 06:24:00
2 2014-01-01 06:46:00
3 2014-01-01 07:04:00
4 2014-01-01 07:24:00
dtype: datetime64[ns]
答案 1 :(得分:0)
您可以使用简单添加和pandas.to_datetime()
将calenderid
列转换为日期时间,使用pandas.to_timedelta()
将actualdeparturetime
列转换为timedelta(以及unit='m'
把单位作为分钟的论据)。示例 -
df['actualdeparturetime'] = pd.to_datetime(df['calendarid']) + pd.to_timedelta(df['actualdeparturetime'],unit='m')
演示 -
In [37]: df
Out[37]:
calendarid actualdeparturetime actualtriptime
0 2014-01-01 360.066667 26.716667
1 2014-01-01 384.050000 19.516667
2 2014-01-01 406.733333 21.900000
3 2014-01-01 424.850000 17.550000
4 2014-01-01 444.666667 23.100000
In [38]: df['actualdeparturetime'] = pd.to_datetime(df['calendarid']) + pd.to_timedelta(df['actualdeparturetime'],unit='m')
In [39]: df
Out[39]:
calendarid actualdeparturetime actualtriptime
0 2014-01-01 2014-01-01 06:00:04.000020 26.716667
1 2014-01-01 2014-01-01 06:24:03.000000 19.516667
2 2014-01-01 2014-01-01 06:46:43.999980 21.900000
3 2014-01-01 2014-01-01 07:04:51.000000 17.550000
4 2014-01-01 2014-01-01 07:24:40.000020 23.100000