对于一个 Excel 文件,其中 date
列不是 date
的类型格式,因此日期为 2018.10
,我们可以看到0
被省略,变成 2018.1
.
date
2018.12
2018.11
2018.1
2018.9
2018.8
2018.7
2018.6
2018.5
2018.4
2018.3
2018.2
2018.1
如何正确将此列转换为年月格式?谢谢。
我尝试使用df['date'] = pd.to_datetime(df['date'].map('{:.1f}'.format), format='%Y.%m')
,但我明白了:
8 2018-01-01
9 2018-01-01
10 2018-01-01
11 2018-09-01
12 2018-08-01
13 2018-07-01
14 2018-06-01
15 2018-05-01
16 2018-04-01
17 2018-03-01
18 2018-02-01
最佳答案
首先将值转换为字符串,然后在第一步中将值转换为日期时间。
然后正确的十月 - 测试上个月是否为 11
,下一个月是否为 9
,错误为 1
:
df['date'] = pd.to_datetime(df['date'].astype(str), format='%Y.%m')
mo = df['date'].dt.month
mask = mo.shift().eq(11) & mo.eq(1) & mo.shift(-1).eq(9)
df.loc[mask, 'date'] = df.loc[mask, 'date'] + pd.offsets.DateOffset(month=10)
print (df)
date
0 2018-12-01
1 2018-11-01
2 2018-10-01
3 2018-09-01
4 2018-08-01
5 2018-07-01
6 2018-06-01
7 2018-05-01
8 2018-04-01
9 2018-03-01
10 2018-02-01
11 2018-01-01
关于python - Python中浮点格式转换为年月格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58554927/