我有一個帶有數字(“數字”)的 DataFrame,我想將這些數字添加到日期中。不幸的是,我的嘗試不起作用,無論我如何嘗試,我總是收到錯誤訊息....
這是我如何嘗試的代碼示例:
from datetime import datetime
number = pd.DataFrame({'date1': ['7053','0','16419','7112','-2406','2513','8439','-180','13000','150','1096','15150','3875','-10281']})
number
df = datetime(2010, 1, 1) number['date1']
df
作為結果的示例(YYYY/MM/DD)應該出現一個帶有日期的列或 DataFrame,它來自計算“開始日期 數字”。
result = pd.DataFrame({'result': ['2001/03/01','1981/11/08','1975/04/08','2023/05/02']})
result
目前這些數字在 df 'number' 型別物件中。然后我收到此錯誤訊息。
unsupported operand type(s) for : 'numpy.ndarray' and 'Timestamp'
如果我將 df 'number' 更改為 str 或 int64,我會收到此錯誤訊息。
addition/subtraction of integers and integer-arrays with timestamp is no longer supported. instead of adding/subtracting `n`, use `n * obj.freq`
我做錯了什么或者有人可以幫助我嗎?
非常感謝!
uj5u.com熱心網友回復:
如果需要按原始列添加天數以2010-01-01使用to_datetime:
number['date1'] = pd.to_datetime(number['date1'].astype(int), unit='d', origin='2010-01-01')
print (number)
date1
0 2029-04-24
1 2010-01-01
2 2054-12-15
3 2029-06-22
4 2003-06-01
5 2016-11-18
6 2033-02-08
7 2009-07-05
8 2045-08-05
9 2010-05-31
10 2013-01-01
11 2051-06-25
12 2020-08-11
13 1981-11-08
對于格式YYYY/MM/DD添加Series.dt.strftime:
number['date1'] = pd.to_datetime(number['date1'].astype(int), unit='d', origin='2010-01-01').dt.strftime('%Y/%m/%d')
print (number)
date1
0 2029/04/24
1 2010/01/01
2 2054/12/15
3 2029/06/22
4 2003/06/01
5 2016/11/18
6 2033/02/08
7 2009/07/05
8 2045/08/05
9 2010/05/31
10 2013/01/01
11 2051/06/25
12 2020/08/11
13 1981/11/08
uj5u.com熱心網友回復:
number['date1'] = pd.to_datetime(number['date1'].astype(int), unit='d', origin='2010/01/01')
result = number['date1'].dt.strftime('%Y/%m/%d')
print (result)
0 2029/04/24
1 2010/01/01
2 2054/12/15
3 2029/06/22
4 2003/06/01
5 2016/11/18
6 2033/02/08
7 2009/07/05
8 2045/08/05
9 2010/05/31
10 2013/01/01
11 2051/06/25
12 2020/08/11
13 1981/11/08
Name: date1, dtype: object
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/496323.html
下一篇:“TypeError:'datetime.datetime'物件不可呼叫”關于使用discord.py制作不和諧機器人
