pau*_*ult 1 python dataframe pandas pandas-groupby
我四处搜索,但找不到有关如何取消堆叠和重新排序 Pandas 数据帧的解决方案。
假设我有以下数据框:
df = pd.DataFrame({'type': [1, 2, 2, 1, 2, 1, 2, 1, 2, 2],
'band': ['A', 'B', 'C', 'C', 'B', 'B', 'A', 'A', 'B', 'C'],
'val': [0.18, 0.19, 0.20, 0.21, 0.22, 0.23, 0.24, 0.25, 0.26, 0.27]})
Run Code Online (Sandbox Code Playgroud)
我可以分组'type'并'band'获得两个维度的平均值,并用于unstack()显示'band'为列:
df.groupby(['type', 'band']).mean().unstack(level=1)
Run Code Online (Sandbox Code Playgroud)
我的问题是,如何对列重新排序,使它们按降序(或更一般地,任意排序)顺序排列?
输出如下所示:
val
band A B C
type
1 0.215 0.230000 0.210
2 0.240 0.223333 0.235
Run Code Online (Sandbox Code Playgroud)
我想要的是以下内容:
val
band C B A
type
1 0.210 0.230000 0.215
2 0.235 0.223333 0.240
Run Code Online (Sandbox Code Playgroud)
在实践中,我有超过 3 列。
看起来你想要sort_index在列上:
df.groupby(['type', 'band']).mean().unstack(level=1)\
.sort_index(axis=1, ascending=False)
Run Code Online (Sandbox Code Playgroud)
结果:
val
band C B A
type
1 0.210 0.230 0.215
2 0.235 0.223 0.240
Run Code Online (Sandbox Code Playgroud)
至于任意订单:假设您的订单是“C、A、B”。通常,您必须直接指定此项。
order = list('CAB')
df[order]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1862 次 |
| 最近记录: |