繁体   English   中英

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

[英]How to convert an int64 into a datetime?

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

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

import datetime as dt
crime["Date"]=pd.TimedeltaIndex(crime["Year"], unit='d')+dt.datetime(1960,1,1)
crime[["Year","Date"]].head(10)

输出截图

它返回给我的日期不正确 - 它没有从正确的年份开始,而且这一天按行增加。

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

我尝试用unit='y'替换上面代码中的unit='d' ,得到以下结果:

Value Error: Units 'M' and 'Y' are no longer supported, as they do not represent unambiguous timedelta value durations. 

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

我不认为这是正确的:

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

因为我希望这将您的年份解释为天数。 如果你不能使用unit='y' ,那么也许有一个很好的理由。 也许那是因为年并不总是具有相同的天数,因此指定年数在天数方面是不明确的。 您必须将任何年份数添加到实际年份中才能使其准确无误。

这同样适用于数月,更是如此,因为数月有多种天数,因此您可能不知道以月为单位的 timedelta 真正意味着什么。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM