gpt4 book ai didi

python - pivot_table 索引中的 NaN 值导致数据丢失

转载 作者:太空宇宙 更新时间:2023-11-03 11:21:39 25 4
gpt4 key购买 nike

这是一个简单的 DataFrame:

> df = pd.DataFrame({'a': ['a1', 'a2', 'a3'],
'b': ['optional1', None, 'optional3'],
'c': ['c1', 'c2', 'c3'],
'd': [1, 2, 3]})
> df

a b c d
0 a1 optional1 c1 1
1 a2 None c2 2
2 a3 optional3 c3 3

透视法1

数据可以这样旋转:

> df.pivot_table(index=['a','b'], columns='c')
d
c c1 c3
a b
a1 optional1 1.0 NaN
a3 optional3 NaN 3.0

缺点:第 2 行的数据丢失,因为 df['b'][1] == None

透视法2

> df.pivot_table(index=['a'], columns='c')
d
c c1 c2 c3
a
a1 1.0 NaN NaN
a2 NaN 2.0 NaN
a3 NaN NaN 3.0

缺点:b 列丢失了。

如何将这两种方法结合起来,以便 b 列和第 2 行保留如下:

                d     
c c1 c2 c3
a b
a1 optional1 1.0 NaN NaN
a2 None NaN 2.0 NaN
a3 optional3 NaN NaN 3.0

更一般地:如果键具有 NaN 值,如何在旋转期间保留行中的信息?

最佳答案

使用set_indexunstack 执行枢轴:

df = df.set_index(['a', 'b', 'c']).unstack('c')

这基本上就是 pandas 所做的 under the hood对于 pivotstackunstack 方法与 pivot 密切相关,通常可用于执行不太符合 pivot 的操作内置的枢轴函数。

结果输出:

                d          
c c1 c2 c3
a b
a1 optional1 1.0 NaN NaN
a2 NaN NaN 2.0 NaN
a3 optional3 NaN NaN 3.0

关于python - pivot_table 索引中的 NaN 值导致数据丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41839402/

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