Pandas在同一频率上重采样如何复制行?

2024-04-26 17:20:16 发布

您现在位置:Python中文网/ 问答频道 /正文

请考虑以下可复制的数据帧作为示例:

import pandas as pd
import numpy as np
from datetime import datetime

list_dates = ['2018-01-05',
              '2019-01-01',
              '2019-01-02',
              '2019-01-05',
              '2019-01-08',
              '2019-01-22']

index = []
for i in list_dates:
    tp = datetime.strptime(i, "%Y-%m-%d")
    index.append(tp)

data = np.array([np.arange(6)]*3).T
columns = ['A','B', 'C']
df = pd.DataFrame(data, index = index, columns=columns)
df['D']= ['Loc1', 'Loc1', 'Loc2', 'Loc2', 'Loc4', 'Loc3']
df['E'] = [0.1, 1, 10, 100, 1000, 10000]

上述示例数据帧的图像:

enter image description here

然后,我尝试通过对上述数据集重新采样来创建一个新的dataframe df2,这样我就拥有了2018-01-05(第一个日期在list_dates)到2019-01-22(最后一个日期在list_dates)之间的所有每日日期。在进行重采样时,我基本上会在数据帧中创建新行,但没有任何数据。你知道吗

这些新行应该只是它们最后一个已知值的副本。例如,在我上面的示例数据框中,我有2018-01-05的数据,但在2018-12-31之前没有2018-01-06的数据。所有这些行都应填写上一个/最后一个已知值的值(=2018-01-05行)。你知道吗

我试着用:

df2 = df.resample('D').last()

但是,这不起作用。相反,我得到了从2018-01-05到2019-01-22的所有日期,其中所有新行(不在原始数据帧df)只有nan值。你知道吗

我错过了什么?有什么建议可以帮我解决吗?你知道吗


Tags: columns数据import示例dfdatadatetimeindex