2012-08-11 229 views
3

我有以下格式的股票行情數據:轉換日期/時間在大熊貓

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中進行相同的轉換?

+3

使用這個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

回答

3

爲了保持大熊貓之內(這是邪惡的快),使用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') 
7

上面的鏈接中提到的解決方案工作,所以我只是在這裏重新發布片段。謝謝!

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) 
    )