对于其中date
列不是date
格式类型的excel文件,因此在日期2018.10
中,我们可以看到0
被省略了,它变成了{ {1}}。
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')
答案 0 :(得分:2)
首先将值转换为字符串,然后在第一步中转换为日期时间。
然后正确的十月-测试上个月是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
答案 1 :(得分:0)
在excel文件中修复此问题可能是最简单的!如果您有很多数据(数千行),那么也许值得编写代码。代码选项是:
.1
是1月还是10月。