2015-10-17 275 views
0

我正在嘗試將日期列和總耗用時間列合併到一個日期時間列中。如何在Python中將日期和已用時間合併到一個日期時間列中

我有一個熊貓數據幀,看起來如下:

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我可以在這些假設下重新採樣數據。但是,如果有更好的方法來做到這一點,請讓我知道。

回答

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] 
+0

謝謝!那工作 –

0

您可以使用pandas.to_datetime()一起簡單相加calenderid列轉換爲datetime,並且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 
+0

謝謝!我一直在努力結合datetime和timedelta值。這清除了一切。 –

+0

很高興我能幫到你! :-)。此外,如果答案有幫助,我想通過點擊答案左側的勾號來請求您接受任何答案(無論您認爲最好還是最有幫助),這對社區有幫助 –

相關問題