为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

潇潇雨雨 2023-12-09 16:59:22
我正在尝试将 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.
查看完整描述

2 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

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

我认为这是不对的:

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

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

对于几个月来说,情况更是如此,因为几个月有不同的天数,所以您可能不知道以月为单位的时间增量的真正含义。


查看完整回答
反对 回复 2023-12-09
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

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

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


查看完整回答
反对 回复 2023-12-09
  • 2 回答
  • 0 关注
  • 72 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信