如何将int64转换为日期时间?

时间:2020-10-19 22:44:01

标签: python

我试图将Year(类型:int64)列转换为日期类型,以便可以使用Groupby函数按十年分组。

我正在使用以下代码转换数据类型:

test

Screenshot of output

它返回给我的日期不正确-它不是从正确的年份开始,并且日期逐行增加。

我希望年份从1960年开始,并且每一行都将年份增加1。

我尝试用import datetime as dt crime["Date"]=pd.TimedeltaIndex(crime["Year"], unit='d')+dt.datetime(1960,1,1) crime[["Year","Date"]].head(10) 替换上面的代码中的unit='d',得到以下结果:

unit='y'

2 个答案:

答案 0 :(得分:1)

我认为@kate的答案就是您想要的。在那个答案出现之前,我写了答案。我认为我的答案可能仍然值得解释为什么不支持unit='y',以及为什么unit='d'也不为您服务...

我认为这是不对的:

TimedeltaIndex(crime["Year"], unit='d')

我希望这会将您的年份计数解释为天数。如果您不能使用unit='y',则可能有充分的理由。可能是因为年份中的天数并不总是相同的,所以就等于天数而言,指定年数是不明确的。您必须在实际年份中添加任何年份计数,才能使其具有确切的含义。

几个月来也是如此,因为几个月的天数各不相同,所以您不知道几个月中的时间增量到底意味着什么。

答案 1 :(得分:0)

我将通过以下方式添加列:

crime['Date'] = crime['Year'].map(lambda x: dt.datetime(1960 + x,1,1))