python - 通过重新排序一列重新排序您的数据框
问题描述
有一个如下所示的数据框:
import pandas as pd
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']},
index=[0, 1, 2, 3])
我想知道当一列中的顺序不同而希望应用于所有其他列时如何重新排列数据框,例如在本例中更改了 A 列?
df2 = pd.DataFrame({'A': ['A3', 'A0', 'A2', 'A1'],
'B': ['B3', 'B0', 'B2', 'B1'],
'C': ['C3', 'C0', 'C2', 'C1'],
'D': ['D3', 'D0', 'D2', 'D1']},
index=[0, 1, 2, 3])
解决方案
set_index
您可以通过和reindex
使用索引reset_index
。假设您的值A
是唯一的,这是唯一可以进行这种转换的情况。
L = ['A3', 'A0', 'A2', 'A1']
res = df1.set_index('A').reindex(L).reset_index()
print(res)
A B C D
0 A3 B3 C3 D3
1 A0 B0 C0 D0
2 A2 B2 C2 D2
3 A1 B1 C1 D1
推荐阅读
- c++ - 铿锵警告:-Wambiguous-ellipsis
- multithreading - JavaFX:将线程保存在集合中是个好主意吗?以及如何做到这一点?
- php - Composer PSR-4 自动加载“找不到类”调试
- android - 错误:使用 adb reverse tcp:8081 tcp:8081 时有多个设备/模拟器
- html - Bootstrap 4 table-bordered 失去了它的风格
- javascript - 如何在 pathfinding3d.js 中的两个远程节点之间构建路径?
- octobercms - 在 Octobercms 中扩展用户插件后端表单
- javascript - 如何将事件绑定到 epub.js 中的演绎版
- twitter-bootstrap - 带有文本区域的引导弹出窗口:无法水平调整大小
- c# - Unity Android 触控输入重置