这是一些示例代码:

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)


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

最佳答案

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

关于python - 向时间索引数据帧添加n次最后一行,同时将日期每次增加1天,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51696861/

10-12 18:09
查看更多