我有以下数据框。如何将接下来的 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/