浮点格式在Python中转换为年月格式

时间:2019-10-25 08:32:36

标签: python pandas dataframe

对于其中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')

2 个答案:

答案 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月。
  • 忽略该列,如果您每个月都有数据,则只需按正确的顺序排列