python - 将最后一行添加 n 次到时间索引数据框,同时每次将日期增加 1 天

标签 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 次(最后粗略地开始),但我还想将日期 + 索引日期增加一天。我认为这需要遵循以下原则:

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

使用额外的 pd.concat 步骤将其分配回原始 df

df = pd.concat([df, df2])

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

相关文章:

python - pandas 使用 lambda 选择和分配

python - 通过 pandas 数据帧的列中具有不同标识符的重复日期时间索引进行聚合

python - 分别在 "mix"和 python 中的两个列表的简单方法?

python - 预测给了我同样的值(value)

python - 如何从多个稀疏序列高效创建类似索引的 Polars DataFrame?

python - Visual Studio 更新到 15.0 后出现扭曲安装问题

python 3 : How can object be instance of type?

python - 按列表选择列(列是列表的子集)

python - 对齐 QTextEdit 底部的文本

Python tornado OS 错误 24 打开的文件太多