python - Pandas pivot_table 包含空身份

标签 python arrays pandas numpy pivot

数据集

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/

相关文章:

python - 类型对象 'Album' 没有属性 'object'

python - PyInstaller 3.2,如何给 "bundle"参数?

python - pandas 按分位数过滤结果为空集

Python:从 pandas 数据帧生成字典,以行作为键,以列作为值

python - 将字符串映射到对列表

python - 有没有办法减少 RMSProp 的代码量

PHP - 在foreach循环中将数据推送到数组

arrays - 用一个条件过滤多个数组

arrays - pig 拉丁文句

Python Pandas 0.14.0。使用 dataframe.to_sql 时时间戳格式错误