【发布时间】:2016-02-09 20:11:24
【问题描述】:
示例一:
注意给定 Pandas DataFrame df 的索引顺序:
>>> df
A B
first second
zzz z 2 4
a 1 5
aaa z 6 3
a 7 8
在给定的df DataFrame 对象上使用stack 和unstack 方法后,索引会自动按字典顺序(按字母顺序)排序,从而丢失行的原始顺序。
>>> df.unstack().stack()
A B
first second
aaa a 7 8
z 6 3
zzz a 1 5
z 2 4
上面的unstack/stack操作后是否可以保持原来的顺序?
根据官方文档reshaping-by-stacking-and-unstacking:
请注意,stack 和 unstack 方法隐式地对涉及的索引级别进行排序。因此,调用 stack 然后 unstack,反之亦然,将导致原始 DataFrame 或 Series 的排序副本
示例二:
>>> dfu = df.unstack()
>>> dfu
A Z
second a z a z
first
aaa 7 6 8 3
zzz 1 2 5 4
如果保留原始索引,我们需要dfu,如下所示:
>>> dfu
A Z
second a z a z
first
zzz 1 2 5 4
aaa 7 6 8 3
我正在寻找的是一种解决方案,可用于在调用 unstack() 或 stack() 方法后根据原始数据帧恢复索引顺序。
【问题讨论】:
-
您可以保留原始索引的副本并重新索引...否则我不这么认为。
-
例如,像上面一样,原始 DataFrame 的索引标签与生成的 DataFrame 的标签匹配,这可以工作。我正在寻找可能不是这种情况的解决方案。