以下是一些示例代码:
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次(从末尾开始),但是我也想将Date + index date增加一天。我认为这需要遵循以下原则:
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)
任何帮助将不胜感激。谢谢!
答案 0 :(得分:4)
使用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
使用另外的df
步骤将其分配回原始的pd.concat
。
df = pd.concat([df, df2])