2017-04-14 47 views
0

我有一個整數,如如何將一系列整數轉換爲日期?

151215 

的熊貓系列我想這些整數在日期轉換

2015-12-15 

這意味着12月15日到2015年在大熊貓網站快速搜尋建議我使用to_datetime()方法。不幸的是,我意識到,如果大熊貓的數據是一個字符串

st = '151215' 
pd.to_datetime(st) 

,然後它工作正常(除了事實上,我並不需要的時間)

Timestamp('2015-12-15 00:00:00') 

但是當大熊貓數據是整數

st = 151215 
pd.to_datetime(st) 

結果是

Timestamp('1970-01-01 00:00:00.000151215') 

你能不能給我建議的有效方式整數列表轉換成日期

+0

'Timestamp'將始終存儲時間。整數只是將它們轉換爲字符串。 – m0nhawk

+2

我想你必須首先轉換爲字符串:http://stackoverflow.com/questions/27506367/python-pandas-integer-yyyymmdd-to-datetime – mhoff

回答

3

你可以使用pandas.to_datetime無需轉換爲字符串第一個(至少在大熊貓0.19):

dates = pd.Series([151215]*8) 
dates = pd.to_datetime(dates, format="%y%m%d") 
print(dates) 
0 2015-12-15 
1 2015-12-15 
2 2015-12-15 
3 2015-12-15 
4 2015-12-15 
5 2015-12-15 
6 2015-12-15 
7 2015-12-15 
dtype: datetime64[ns] 

轉換一個單值如在你的例子中將導致Timestamp('2015-12-15 00:00:00'),但如果你通過整個系列的結果看起來像上面。

+0

這很好,但我試着添加布爾變量「inplace =真「,因爲它通常是在熊貓數據框上完成的,並且不起作用。請給我一點進一步的幫助嗎? –

+0

我會指出,你必須指定格式..它似乎整數的默認格式是自世紀以來的納秒時間 – Aaron

+0

@StefanoFedele我認爲修改就地是一般皺眉,並沒有'inplace' kwarg for_datetime,因爲它僅返回轉換的序列或值,而不是整個幀。例如,如果日期是數據框中的一列,那麼您只需說出df.dates = pd.to_datetime(df.dates,...),而不使用就地kwarg,它會完成您想要的任務。 – Grr