gpt4 book ai didi

python - Pandas pivot_table 包含空身份

转载 作者:行者123 更新时间:2023-12-02 16:16:51 24 4
gpt4 key购买 nike

数据集

x   y   a
1 3 0
1 1 0
1 2 0
3 6 0
5 3 1
1 5 0
1 7 0
1 6 0
1 4 0

可视化

网格大小= 8 x 12

![enter image description here

数据透视表

X = df.pivot(index='x',columns='y',values='a').values
X[np.isnan(X)] = 0

array([[0., 0., 1., 0., 1., 0., 0., 0.],
[0., 1., 0., 0., 1., 0., 1., 0.],
[0., 0., 0., 0., 1., 0., 0., 0.],
[0., 1., 1., 1., 0., 1., 0., 0.],
[0., 0., 0., 1., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 1., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 1.],
[0., 0., 0., 0., 1., 0., 0., 0.]])

这里的数据透视表大小是 (8, 8) 但我希望 (8, 12) 空行被排除在数据透视表中。

最佳答案

尝试使用reindex:

X = (df.pivot(index='x',columns='y', values='a')
.fillna(0)
.reindex(np.arange(12), axis=1, fill_value=0)
.reindex(np.arange(8), fill_value=0)
)

输出:

y  0    1    2    3    4    5    6    7   8   9   10  11
x
0 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0
1 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0
2 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0
3 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0
4 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0
5 0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0 0 0 0
6 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0
7 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0

同时考虑 set_index().unstack() 而不是 pivot:

X = (df.set_index(['x','y'])
['a'].unstack(fill_value=0)
.reindex(np.arange(12), axis=1, fill_value=0)
.reindex(np.arange(8), fill_value=0)
)

它给你一个更好看的数据:

y  0   1   2   3   4   5   6   7   8   9   10  11
x
0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0
2 0 0 0 0 0 0 0 0 0 0 0 0
3 0 0 0 0 0 0 0 0 0 0 0 0
4 0 0 0 0 0 0 0 0 0 0 0 0
5 0 0 0 1 0 0 0 0 0 0 0 0
6 0 0 0 0 0 0 0 0 0 0 0 0
7 0 0 0 0 0 0 0 0 0 0 0 0

关于python - Pandas pivot_table 包含空身份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66425536/

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