2017-04-14 54 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