下面是一些示例代码:
import pandas as pd
data = {'Date': ['2018-01-01', '2018-01-02'], 'M1': [1, 1]}
df = pd.DataFrame.from_dict(data)
df.Timestamp = pd.to_datetime(df.Date, format='%Y-%m-%d')
df.index = df.Timestamp
new_data = pd.DataFrame(df[-1:].values, columns=df.columns)
df = df.append(new_data)
我想复制数据框的最后一行 n=5 次(最后粗略地开始),但我还想将日期 + 索引日期增加一天。我认为这需要遵循以下原则:
df['DATE'] + pd.DateOffset(days=10)
最终,使用上面的例子,需求应该是这样的:
data = {'Date': ['2018-01-01', '2018-01-02', '2018-01-03', '2018-01-04', '2018-01-05', '2018-01-06', '2018-01-07'], 'M1': [1, 1, 1, 1, 1, 1, 1]}
df = pd.DataFrame.from_dict(data)
如有任何帮助,我们将不胜感激。谢谢!
最佳答案
使用 pd.concat
和 date_range
创建一个新的 DataFrame。
n = 5
v = pd.to_datetime(df.Date.values[-1])
df2 = pd.concat([df.iloc[[-1]]] * n).assign(
Date=pd.date_range(v, v + pd.DateOffset(days=n), closed='right'))
df2
Date M1 Timestamp index
1 2018-01-03 1 2018-01-02 2018-01-02
1 2018-01-04 1 2018-01-02 2018-01-02
1 2018-01-05 1 2018-01-02 2018-01-02
1 2018-01-06 1 2018-01-02 2018-01-02
1 2018-01-07 1 2018-01-02 2018-01-02
使用额外的 pd.concat
步骤将其分配回原始 df
。
df = pd.concat([df, df2])
关于python - 将最后一行添加 n 次到时间索引数据框,同时每次将日期增加 1 天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51696861/