python - 如何在 pandas 数据帧上切换外部索引的顺序?
问题描述
假设我有一个像这样的简单数据框:
data = {"Weekday": ["Sun", "Sun", "Mon", "Mon"], "city": ["Austin", "Dallas", "Austin", "Dallas"], "visitors": [139, 237, 326,456], "signups": [7,12,3,5]}
df = pd.DataFrame(data)
具有多级索引
df.set_index(["Weekday", "city"], inplace=True)
visitors signups
Weekday city
Sun Austin 139 7
Dallas 237 12
Mon Austin 326 3
Dallas 456 5
在堆叠和取消堆叠,玩弄它,交换级别和重新索引之后,我最终得到了这个:
Weekday city
Mon Austin 326 3
Dallas 456 5
Sun Austin 139 7
Dallas 237 12
如何将外部索引切换回原始索引?
想不出一个简单的直接方法来做到这一点。
我得到的最接近的是
df = df.iloc[::-1]
这颠倒了内部和外部,这不是我想要的。我只是想让外部切换。
我还尝试了以下方法:
提前致谢。
解决方案
一种方法是将“原始”索引存储在变量中,然后稍后重新索引数据帧。
data = {"Weekday": ["Sun", "Sun", "Mon", "Mon"], "city": ["Austin", "Dallas", "Austin", "Dallas"], "visitors": [139, 237, 326,456], "signups": [7,12,3,5]}
df = pd.DataFrame(data)
df = df.set_index(["Weekday", "city"])
print('Original Dataframe')
print(df)
print('\n')
idx = df.index
df = df.stack().unstack()
print('Played with dataframe')
print(df)
print('\n')
df = df.reindex(idx)
print('Reindexed Dataframe')
print(df)
输出:
Original Dataframe
visitors signups
Weekday city
Sun Austin 139 7
Dallas 237 12
Mon Austin 326 3
Dallas 456 5
Played with dataframe
visitors signups
Weekday city
Mon Austin 326 3
Dallas 456 5
Sun Austin 139 7
Dallas 237 12
Reindexed Dataframe
visitors signups
Weekday city
Sun Austin 139 7
Dallas 237 12
Mon Austin 326 3
Dallas 456 5
推荐阅读
- c++ - 在 C++ 中编辑类私有
- visual-studio - 如何在 Visual Studio 2017 中通过 cmake 启用 Visual Leak Detector?
- android - MPAndroidChart 绘制多个使用共享 X 轴垂直排列的图表
- c - sscanf 的返回值
- python - 子流程“echo $ENVIRONMENT_VAR”输出“$ENVIRONMENT_VAR”
- skype - Skype 网络控制支持
- sql - 从选定的特征 QGIS 中选择表(postgis)中的行
- c - 为什么我总是得到 0 我的 C 代码不会进入 Switch
- node.js - Mongodb 仅在字段值上更新为三级嵌入文档
- azure - 如何配置和启动 Azure 预留实例虚拟机