我试图将Year(类型:int64)列转换为日期类型,以便可以使用Groupby函数按十年分组。
我正在使用以下代码转换数据类型:
test
它返回给我的日期不正确-它不是从正确的年份开始,并且日期逐行增加。
我希望年份从1960年开始,并且每一行都将年份增加1。
我尝试用import datetime as dt
crime["Date"]=pd.TimedeltaIndex(crime["Year"], unit='d')+dt.datetime(1960,1,1)
crime[["Year","Date"]].head(10)
替换上面的代码中的unit='d'
,得到以下结果:
unit='y'
答案 0 :(得分:1)
我认为@kate的答案就是您想要的。在那个答案出现之前,我写了答案。我认为我的答案可能仍然值得解释为什么不支持unit='y'
,以及为什么unit='d'
也不为您服务...
我认为这是不对的:
TimedeltaIndex(crime["Year"], unit='d')
我希望这会将您的年份计数解释为天数。如果您不能使用unit='y'
,则可能有充分的理由。可能是因为年份中的天数并不总是相同的,所以就等于天数而言,指定年数是不明确的。您必须在实际年份中添加任何年份计数,才能使其具有确切的含义。
几个月来也是如此,因为几个月的天数各不相同,所以您不知道几个月中的时间增量到底意味着什么。
答案 1 :(得分:0)
我将通过以下方式添加列:
crime['Date'] = crime['Year'].map(lambda x: dt.datetime(1960 + x,1,1))