python - 如何延长 pandas 数据框中的日期

标签 python pandas numpy date datetime

我有以下数据框。如何将接下来的 n=6 个月添加到日期末尾并指定新值=0。我运行以下代码,但会出现错误。

from pandas import DataFrame
import numpy as np
from datetime import timedelta
import calendar


date=['2000-01-01','2000-02-01','2000-03-01','2000-04-01','2000-05-01','2000-06-01','2000-07-01' ]
value=[5,6,2,7,5,6,2]
df = pd.DataFrame(list(zip(date,value)),columns =['date','value'])

df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d')


n=6
end_point = len(df)
x =df.at[end_point - 1, 'date']
days_in_month=calendar.monthrange(x.year, x.month)[1]

for i in range(n):
    df.at[df.index[end_point + i], 'date'] = x + timedelta(days=days_in_month + days_in_month * i)
    df.at[df.index[end_point + i], 'value'] = 0

最佳答案

IIUC,您可以使用date_range :

dti = pd.date_range(df['date'].max() + pd.offsets.MonthBegin(1), periods=6, freq='MS')
out = pd.concat([df, pd.DataFrame({'date': dti, 'value': 0})], ignore_index=True)

输出:

>>> out
         date  value
0  2000-01-01      5
1  2000-02-01      6
2  2000-03-01      2
3  2000-04-01      7
4  2000-05-01      5
5  2000-06-01      6
6  2000-07-01      2
7  2000-08-01      0
8  2000-09-01      0
9  2000-10-01      0
10 2000-11-01      0
11 2000-12-01      0
12 2001-01-01      0

关于python - 如何延长 pandas 数据框中的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76154238/

相关文章:

python - 使用嵌套循环进行 Pandas 赋值会导致内存错误

python - 将数据框分解为子集/组的新数据框。从其他数据框创建数据子集/组的新数据框

pandas - 将大数据帧拆分为较小的相等数据帧

python - 向量化切片的最小值和最大值可能吗?

python - PyQt - 在窗口之间传递数字变量

python - 在 Pandas DataFrame 中添加新列时结果不一致。它是系列还是值?

python - 如何用 pandas 读取目录中所有文件的内容?

python - 使用python将 'repetitive' 2D数组转换为矩阵

python - 为什么 pandas 无法连接两列对象数据类型(其中一列从 int 转换为 object)?

python - 属性错误: 'Model' object has no attribute '_name' during input layer concatenation