【发布时间】:2019-02-24 20:18:52
【问题描述】:
我想从我的DataFrame - df.
创建一个基于日期和时间的多索引
这实际上有效,indexed 返回正确的 Multiindex(连续日期从 2017 年 2 月 10 日到 2018 年 3 月 31 日,连续时间从 08:00:00 到 21:55:00,间隔 5 分钟)。
问题是我的数据集没有完整的观察结果。意味着,对于随机的一天,可能会丢失 08:05:00 到 08:40:00 的观察结果。我的 Multiindex 的长度为 20496,而我的 DataFrame 的长度为 20486。
当我想将索引与我的DataFrame 合并时,所有观察结果都是NAN。现在有人如何将多索引与我最初的DataFrame - df 合并?
df = pd.read_csv(file_name, parse_dates=[0],
index_col=0, sep=',')
df['Date'] = df.index.date
df['Time'] = df.index.time
df['Time'] = df['Time'].astype(str)
df = df[df['Time'] != '22:00:00']
list_date = set(df['Date'])
list_time = set(df['Time'])
list_date = sorted(list_date)
list_time = sorted(list_time)
iterables = [list_date, list_time]
indexed = pd.MultiIndex.from_product(iterables,
names=['date', 'time'])
df_new = pd.DataFrame(df, index=indexed)
df 输出:
r2 var_v2x Date Time
TIME1
2017-10-02 08:00:00 NaN 0.00008784 2017-10-02 08:00:00
2017-10-02 08:05:00 0.00000000 0.00008784 2017-10-02 08:05:00
2017-10-02 08:10:00 0.00000008 0.00008784 2017-10-02 08:10:00
【问题讨论】:
-
似乎您可能需要考虑使用单个
DatetimeIndex,它允许您使用resample方法。或者干脆使用pd.date_range。至于合并,我没有看到任何与此相关的代码,所以很难知道出了什么问题。 -
但我的猜测是合并问题与您的实际问题无关。您能否提供一些示例数据(可能就在
pd.read_csv行之后)和您的预期输出? -
嗨@ALollz,在 pd.read_csv 之后,我的初始索引是 DateTimeIndex。但是我必须对需要两个索引的数据应用一个公式。一个带日期,一个带时代...
df的输出完全没问题,我将其添加到我的帖子中。
标签: python pandas dataframe merge multi-index