猿问

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

我正在尝试将 Year 列(类型: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='d'用上面的代码替换unit='y',得到以下结果:

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


潇潇雨雨
浏览 142回答 2
2回答

慕姐8265434

我认为@kate的答案就是你想要的。我在那之前就写下了我的答案。我认为我的答案可能仍然值得解释为什么unit='y'不支持,以及为什么unit='d'也不适合你......我认为这是不对的:TimedeltaIndex(crime["Year"], unit='d')因为我希望这会将您的年数解释为天数。如果您不能使用unit='y',那么也许有一个很好的理由。也许这是因为年份并不总是具有相同的天数,因此指定年数在相当于天数方面是不明确的。您必须将任何年数添加到实际年份中才能使其具有确切意义。对于几个月来说,情况更是如此,因为几个月有不同的天数,所以您可能不知道以月为单位的时间增量的真正含义。

慕虎7371278

我将通过以下方式添加该列:crime['Date'] = crime['Year'].map(lambda x: dt.datetime(1960 + x,1,1))
随时随地看视频慕课网APP

相关分类

Python
我要回答