python - Python中浮点格式转换为年月格式

标签 python pandas dataframe

对于一个 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/

相关文章:

Python 处理 Web 表单

python - Python3套接字/选择器注册多个事件

python - 根据观察分位数分配指标

python - Pandas 根据日期时间融化数据框并填充所有值 NaN

python - 一次获取 NumPy 数组中多个元素的索引

python - 获取 "TypeError: unsupported operand type(s) for +: '函数'和 'function'“

python - 使用 Dataframe.Groupby 对行进行分组,但将其他字段与 Grouper 中提到的列分开

r - 提取矩阵的对角线(不是非对角线)元素

python - 从 python 中的数据帧矩阵打印标题值

r - 从列表列表制作数据框,但每个元素都是一列