将缺失的行添加到数据框中,均匀分布

时间:2017-10-17 18:14:55

标签: python pandas resampling

我使用自定义采样器功能对pandas数据帧进行了采样。 这基本上由两列组成:

  • 时间戳
  • 一个值

我希望创建一个新数据框,其中所有日期时间均匀分布(即每10分钟)以填充采样的一个(以相同频率采样)中的缺失值。

Shoudl我需要使用 reindex 方法吗?

我尝试做类似的事情:

dd = pd.date_range(
        start_date.astimezone(pytz.utc),
        end_date.astimezone(pytz.utc),
        freq="3min"

    )
dd = dd.map(lambda item: calendar.timegm(item.timetuple()))
df.index = df.reindex(dd, fill_value="NaN")

它不起作用。我得到一个"长度不匹配错误"因为这两个指数的大小不同。

这是正确的方法吗?

谢谢,

FB

1 个答案:

答案 0 :(得分:1)

您可以尝试使用此功能,我使用comvibe_first合并两个数据帧。

start_date = datetime.datetime.today()
end_date = datetime.datetime(2017, 10, 19)
​
dd = pd.date_range(
        start_date,
        end_date,
        freq="3min"
​
    )
dd = dd.map(lambda item: calendar.timegm(item.timetuple()))
columns = ['some', 'column', 'headers']
df = pd.DataFrame(columns=columns, index=dd)
myarray = np.random.random((len(dd),3))
for val, item in enumerate(myarray):
    df.ix[df.index.values[val]] = item
index_new = df.sample(frac=0.8, random_state=200)
df = df.drop(index_new.index)
df_ok = pd.DataFrame(columns=columns, index=dd)
df_ok = df_ok.combine_first(df)