我使用自定义采样器功能对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
答案 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)