【发布时间】:2016-02-04 02:39:27
【问题描述】:
我有一个带有两个索引的 Pandas 数据框
Column1
indexA indexB
1001 aaa 1
bbb 1
ccc 1
1002 ddd 1
eee 1
并且希望indexB 对indexA 的每个值具有相同的值:
Column1
indexA indexB
1001 aaa 1
bbb 1
ccc 1
ddd 0
eee 0
1002 aaa 0
bbb 0
ccc 0
ddd 1
eee 1
我的第一个想法是取消堆叠,用 0 填充,然后堆叠它,但这似乎有点矫枉过正。有没有更简单的方法?
编辑: Alexander 在下面的回答虽然需要很长时间(我的原始数据框有 350k 行)但有效。我稍微改变了这个解决方案:
df = pd.read_sql(sql=sql, con=db_eng, index_col=index)
idx = pd.MultiIndex.from_product([df.index.levels[0], df.index.levels[1]], names=df.index.names)
df.reindex(idx).fillna(value=0)
发布后也发现了这两个问题:
【问题讨论】:
-
不,这似乎是一种合乎逻辑的方式。您还可以合并两个数据框(对应于不同的值)并填充 nas,但它不会更短。我必须说,你在这里描述的内容似乎并不长。