python - Pandas 堆栈/取消堆栈结果错误

标签 python pandas

我有这个 Pandas DataFrame:

              rnd  non-rnd
first   last              
andrew  wood    0      123
bob     wood    0      234
charlie wood    0      345

有人可以解释一下以下两个操作之间的区别吗:

In [1]: df.unstack(level=0).stack(level=0)
Out[1]: 
first         andrew  bob  charlie
last                              
wood non-rnd       0    0        0
     rnd         123  234      345

In [2]: df.unstack(level=0).sort_index(axis=1).stack(level=0)
Out[2]: 
first         andrew  bob  charlie
last                              
wood non-rnd     123  234      345
     rnd           0    0        0

第一个显然是错误的..这​​是一个错误吗?还是我只是用错了?

最佳答案

所以我的解决方案是,总是在 unstack 之前使用 stack ,使索引或列变成简单索引,而不是保持它们都是多重索引。 (肯定是bug,看上面的评论,有two link来自github)

df.stack().unstack(level=0)
Out[125]: 
first         andrew  bob  charlie
last                              
wood rnd           0    0        0
     non-rnd     123  234      345

关于python - Pandas 堆栈/取消堆栈结果错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51849095/

相关文章:

python - pandas 数据库合并多列未正确合并

python - matplotlib 中的 TeX 渲染、大括号和字符串格式化语法

python - 选择每组的最大行 - Pandas 性能问题

pandas - 反向 get_dummies()

python - 根据唯一行名称计算数据帧子集的平均值

java - 从databricks连接到数据库时获取java.lang.ClassNotFoundException : com. mysql.jdbc.Driver

python - 在 Mako 模板中将 def 作为函数调用

python - 从 pandas 或 dask 的数据库表中读取大数据

python - Pandas:如何选择按键分组的一系列行的最小值

Pandas - 分为 24 小时区 block ,但不是午夜到午夜