gpt4 book ai didi

python - 从数据框到数据透视表时 Pandas 处理缺失值

转载 作者:太空狗 更新时间:2023-10-29 18:34:19 25 4
gpt4 key购买 nike

给定以下 pandas 数据框:

df = pd.DataFrame({'A': ['foo' ] * 3 + ['bar'],
'B': ['w','x']*2,
'C': ['y', 'z', 'a','a'],
'D': rand.randn(4),
})

print df.to_string()
"""
A B C D
0 foo w y 0.06075020
1 foo x z 0.21112476
2 foo w a 0.01652757
3 bar x a 0.17718772
"""

注意没有 bar,w 组合。执行以下操作时:

pv0 = pandas.pivot_table(df, rows=['A','B'],cols=['C'], aggfunc=numpy.sum)

pv0.ix['bar','x'] #returns result

pv0.ix['bar','w'] #key error though i would like it to return all Nan's

pv0.index #returns
[(bar, x), (foo, w), (foo, x)]

只要在 'C' 列中至少有一个条目,如 foo,x 的情况(它在 'C' 列中只有 'z' 的值),它将为另一列返回 NaN foo,x 不存在“C”的值(例如“a”、“y”)

我想要的是拥有所有多索引组合,即使是那些没有所有列值数据的组合。

pv0.index #I would like it to return
[(bar, w), (bar, x), (foo, w), (foo, x)]

我可以将 .ix 命令包装在 try/except block 中,但是 pandas 有没有办法自动填充它?

最佳答案

您可以使用 reindex()方法:

>>> df1 = pd.pivot_table(df, rows=['A','B'], cols='C', aggfunc=np.sum)
>>> df1
D
C a y z
A B
bar x 0.161702 NaN NaN
foo w 0.749007 0.85552 NaN
x NaN NaN 0.458701

>>> index = list(iter.product(df['A'].unique(), df['B'].unique()))
>>> df1.reindex(index)
D
C a y z
foo w 0.749007 0.85552 NaN
x NaN NaN 0.458701
bar w NaN NaN NaN
x 0.161702 NaN NaN

关于python - 从数据框到数据透视表时 Pandas 处理缺失值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19957755/

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