我正在嘗試將 Year 列(類型:int64)轉換為日期類型,以便我可以使用 Groupby 函數(shù)按十年進行分組。我使用以下代碼來轉換數(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',得到以下結果: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')
因為我希望這會將您的年數(shù)解釋為天數(shù)。如果您不能使用unit='y'
,那么也許有一個很好的理由。也許這是因為年份并不總是具有相同的天數(shù),因此指定年數(shù)在相當于天數(shù)方面是不明確的。您必須將任何年數(shù)添加到實際年份中才能使其具有確切意義。
對于幾個月來說,情況更是如此,因為幾個月有不同的天數(shù),所以您可能不知道以月為單位的時間增量的真正含義。

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