我正在尝试将 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'
,那么也许有一个很好的理由。也许这是因为年份并不总是具有相同的天数,因此指定年数在相当于天数方面是不明确的。您必须将任何年数添加到实际年份中才能使其具有确切意义。
对于几个月来说,情况更是如此,因为几个月有不同的天数,所以您可能不知道以月为单位的时间增量的真正含义。
慕虎7371278
TA贡献1802条经验 获得超4个赞
我将通过以下方式添加该列:
crime['Date'] = crime['Year'].map(lambda x: dt.datetime(1960 + x,1,1))
添加回答
举报
0/150
提交
取消