python - 如何使用 numpy.timedelta 添加(或减去)1 个月?

标签 python pandas numpy timedelta

我正在尝试将日期减少到 1 个月。我的意思是提前 1 个月获得相同的日期。

import pandas as pd 
import numpy as np 

pd.to_datetime(201905, format='%Y%m') - np.timedelta64(1, 'M')

我希望得到上个月的第一天

Timestamp('2019-04-01 00:00:00')

但是输出是

Timestamp('2019-03-31 13:30:54')

当我尝试添加一个月时,问题似乎是一样的。

代码

pd.to_datetime(201905, format='%Y%m') + np.timedelta64(1, 'M')

返回

Timestamp('2019-05-31 10:29:06')

代替

Timestamp('2019-06-01 00:00:00')

我该如何解决这个问题?

我的最终目标是以整数格式 YYYYmm(如 201905)获取日期,然后添加(或减去)任意数量的月份并以相同的格式(整数,YYYYmm)返回新日期。也许可以用其他包轻松完成?

最佳答案

一个月的Timedelta是一年的长度除以12,所以是'average' month unit:

a = pd.to_datetime(201905, format='%Y%m') - np.timedelta64(1, 'M')
print (a)
2019-03-31 13:30:54

如果要减去 1 个月,请使用 offsets.DateOffset :

b = pd.to_datetime(201905, format='%Y%m') - pd.offsets.DateOffset(months=1)    
print (b)
2019-04-01 00:00:00

关于python - 如何使用 numpy.timedelta 添加(或减去)1 个月?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60861383/

相关文章:

python - pandas 可以通过使用 pandas 和 Python 2.7 选择一些数据或所有数据特定列并平均每 5 行吗?

python - Pandas - 从派生计算中替换行值

python - 3D 卷积神经网络输入形状

python - Keras:在 theano 和 tensorflow 之间转换预训练的权重

python - 来自 Numpy 数组的 PyQt5 QImage

Python/Tkinter - 标签不垂直对齐

python - 如何使用 Python 以编程方式将行添加到现有 Excel 表

python - 如何在Python中从字符串中提取表情符号和标志?

python - 以同样的方式转换 CSV 文件的文件夹,然后使用 python 输出多个数据帧

python - 如何根据其他列中的值从 Pandas 数据框中查找重复项?