向时间索引数据帧添加n次最后一行,同时将日期每次增加1天

时间:2018-08-05 17:51:13

标签: python python-3.x pandas dataframe

以下是一些示例代码:

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)

任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:4)

使用pd.concatdate_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])