我正在嘗試將 Year 列(類型:int64)轉(zhuǎn)換為日期類型,以便我可以使用 Groupby 函數(shù)按十年進(jìn)行分組。我使用以下代碼來轉(zhuǎn)換數(shù)據(jù)類型: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',得到以下結(jié)果:Value Error: Units 'M' and 'Y' are no longer supported, as they do not represent unambiguous timedelta value durations.
2 回答

慕姐8265434
TA貢獻(xiàn)1813條經(jīng)驗(yàn) 獲得超2個(gè)贊
我認(rèn)為@kate的答案就是你想要的。我在那之前就寫下了我的答案。我認(rèn)為我的答案可能仍然值得解釋為什么unit='y'
不支持,以及為什么unit='d'
也不適合你......
我認(rèn)為這是不對(duì)的:
TimedeltaIndex(crime["Year"], unit='d')
因?yàn)槲蚁M@會(huì)將您的年數(shù)解釋為天數(shù)。如果您不能使用unit='y'
,那么也許有一個(gè)很好的理由。也許這是因?yàn)槟攴莶⒉豢偸蔷哂邢嗤奶鞌?shù),因此指定年數(shù)在相當(dāng)于天數(shù)方面是不明確的。您必須將任何年數(shù)添加到實(shí)際年份中才能使其具有確切意義。
對(duì)于幾個(gè)月來說,情況更是如此,因?yàn)閹讉€(gè)月有不同的天數(shù),所以您可能不知道以月為單位的時(shí)間增量的真正含義。

慕虎7371278
TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超4個(gè)贊
我將通過以下方式添加該列:
crime['Date'] = crime['Year'].map(lambda x: dt.datetime(1960 + x,1,1))
添加回答
舉報(bào)
0/150
提交
取消