gpt4 book ai didi

python - 填充 pandas 数据框中缺失的数据

转载 作者:行者123 更新时间:2023-12-01 04:09:09 25 4
gpt4 key购买 nike

我有一个带有两个索引的 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 填充然后堆叠它,但这似乎有点矫枉过正。有没有更简单的方法?

编辑:亚历山大的下面的答案有效,尽管需要很长时间(我的原始数据框有 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)

发布此后还发现了这两个问题:

最佳答案

可能有更好的方法来做到这一点。我使用 pd.MultiIndex.from_product 创建了一个新的 MultiIndex。然后,我创建了一个带有虚拟值的新数据框,加入了现有的 dtaframe,并删除了虚拟列。

df = pd.DataFrame({'index_0': ['a', 'a', 'b', 'b', 'b'], 
'index_1': ['A', 'B', 'A', 'B', 'C'],
'vals': [1, 2, 3, 4, 5]}).set_index(['index_0', 'index_1'])

>>> df
vals
index_0 index_1
a A 1
B 2
b A 3
B 4
C 5

idx = pd.MultiIndex.from_product([df.index.levels[0], df.index.levels[1]],
names=df.index.names)
new_df = pd.DataFrame({'_dummy_': [1] * len(idx)}, index=idx).join(df)
del new_df['_dummy_']

>>> new_df
vals
index_0 index_1
a A 1
B 2
C NaN
b A 3
B 4
C 5

关于python - 填充 pandas 数据框中缺失的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35181761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com