Pandas:在所有外部索引值中强制执行内部索引的一致值

问题描述 投票:0回答:0

我有一个由 entity_id 和时间戳索引的数据集,但某些 entity_id 在所有时间戳中都没有条目(不是缺失值,只是没有行)。在一些复杂的 NaN 处理和重采样之前,我试图在 entity_id 中强制执行一致的时间戳。但是,我无法重新索引来创建我期望的行,这会导致下游出现意外行为。我的方法是:

import numpy as np
import pandas as pd
df = pd.DataFrame(columns = ["id", "ts", "value"])
df.loc[0,:] = [1, pd.Timestamp("2022-01-01 00:00:00"), 1]
df.loc[1,:] = [1, pd.Timestamp("2022-01-01 00:00:01"), 2]
df.loc[2,:] = [2, pd.Timestamp("2022-01-01 00:00:00"), 3]
df = df.set_index(["id", "ts"])
df

# Grab all the timestamps
timestamps = df.index.get_level_values("ts").unique().sort_values()

# Perform the reindexing
df2 = df.reindex(timestamps, level = 1, axis = 0, fill_value = np.nan)

但是,这使我的数据框保持不变,即 df2 仍然只有 3 行。也许重建索引在这里不是正确的方法,但我认为它会起作用。

这种操作有最佳实践吗?

谢谢!

pandas multi-index reindex
© www.soinside.com 2019 - 2024. All rights reserved.