我有以下格式的股票行情數據:轉換日期/時間在大熊貓
40289.65972
40289.66319
40289.66667
和Excel能夠神奇將其轉換爲:通過「單元格格式」
4/22/14 3:50 PM
4/22/14 3:55 PM
4/22/14 4:00 PM
如何在pandas
中進行相同的轉換?
我有以下格式的股票行情數據:轉換日期/時間在大熊貓
40289.65972
40289.66319
40289.66667
和Excel能夠神奇將其轉換爲:通過「單元格格式」
4/22/14 3:50 PM
4/22/14 3:55 PM
4/22/14 4:00 PM
如何在pandas
中進行相同的轉換?
爲了保持大熊貓之內(這是邪惡的快),使用to_timedelta()
import pandas as pd
# should get 7/7/1988 1:26:24 a.m. (https://support.microsoft.com/en-us/kb/214094)
pd.to_datetime('1899-12-30') + pd.to_timedelta(32331.06, 'D')
產生 Timestamp('1988-07-07 01:26:24')
如果你有一個完整的Excel的浮動日期的數據幀可以轉換整個事情:
df['BetterDT'] = pd.to_datetime('1899-12-30') + pd.to_timedelta(df.ExecDate, 'D')
上面的鏈接中提到的解決方案工作,所以我只是在這裏重新發布片段。謝謝!
import datetime
def minimalist_xldate_as_datetime(xldate, datemode):
# datemode: 0 for 1900-based, 1 for 1904-based
return (
datetime.datetime(1899, 12, 30)
+ datetime.timedelta(days=xldate + 1462 * datemode)
)
Excel中認爲1900閏年,所以要小心你想翻譯什麼: http://spreadsheetpage.com/index.php/oddity/the_intentional_date_bug/
使用這個http://stackoverflow.com/questions/1108428/how-do-i-read-a-date-in-excel-format-in-python將你的「floats」轉換成實例你可以在Pandas中使用''datetime.datetime''。 – diliop 2012-08-12 01:07:57