我有一個資料框資料
d=pd.DataFrame({"dat":["01-06-68", "01-06-57","14-02-80","01-01-04","07-11-20"],
"j":[34,2,1,7,8]})
我想將 dat 列轉換為當前采用 dd-mm-yy 格式的“YYYY-MM-DD”格式
代碼使用
pd.to_datetime(d.dat)
這個的輸出是錯誤的
0 2068-01-06
1 2057-01-06
2 1980-02-14
3 2004-01-01
4 2020-07-11
Name: dat, dtype: datetime64[ns]
問題
- 它應該給出輸出年份為 1968 而不是 2068
- 月份和日期也沒有按順序排列
所需輸出:
0 1968-06-01
1 1957-06-01
2 1980-02-14
3 2004-01-01
4 2020-11-07
Name: dat, dtype: datetime64[ns]
uj5u.com熱心網友回復:
使用可呼叫替換測驗最后一位數字的解決方案,然后使用%YYYYY 格式的匹配年份:
f = lambda x: '19' x.group() if int(x.group()) > 22 else '20' x.group()
d.dat = d.dat.str.replace('(\d )$', f, regex=True)
d.dat = pd.to_datetime(d.dat, format='%d-%m-%Y')
print (d)
dat j
0 1968-06-01 34
1 1957-06-01 2
2 1980-02-14 1
3 2004-01-01 7
4 2020-11-07 8
如果年份更大,則減去 100 年,例如2022:
d.dat = pd.to_datetime(d.dat, format='%d-%m-%y')
d.dat = d.dat.mask(d.dat.dt.year.gt(2022), d.dat - pd.offsets.DateOffset(years=100))
print (d)
dat j
0 1968-06-01 34
1 1957-06-01 2
2 1980-02-14 1
3 2004-01-01 7
4 2020-11-07 8
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/357477.html
下一篇:繪制堆積條形圖
