[英]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.