Python 如何反转列值并保持列标题不变
假设我有一个数据帧Python 如何反转列值并保持列标题不变,python,pandas,numpy,dataframe,Python,Pandas,Numpy,Dataframe,假设我有一个数据帧df df = pd.DataFrame([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]], columns=['A', 'B', 'C', 'D', 'E']) 看起来像这样 A B C D E 0 1 2 3 4 5 1 6 7 8 9 10 如何颠倒列值的顺序,但将列标题保留为A、B、C、D、E 我想让它看起来像 A B C D E 0 5 4 3
df
df = pd.DataFrame([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]],
columns=['A', 'B', 'C', 'D', 'E'])
看起来像这样
A B C D E
0 1 2 3 4 5
1 6 7 8 9 10
如何颠倒列值的顺序,但将列标题保留为A、B、C、D、E
我想让它看起来像
A B C D E
0 5 4 3 2 1
1 10 9 8 7 6
我尝试过对列索引进行排序。sort_index(1,升序=False),但这会改变列标题(显然),而且我不知道我的列是否以排序方式开始。方法1重建
pd.DataFrame(df.values[:, ::-1], df.index, df.columns)
df[:] = df.values[:, ::-1]
df
方法2赋值
pd.DataFrame(df.values[:, ::-1], df.index, df.columns)
df[:] = df.values[:, ::-1]
df
两者都给出了或者您可以将列反转:
df.columns = reversed(df.columns)
df.sortlevel(axis=1)
# A B C D E
#0 5 4 3 2 1
#1 10 9 8 7 6
另外,使用沿水平方向翻转值的:
pd.DataFrame(np.fliplr(df.values), columns=df.columns, index=df.index)
这个答案太棒了!为了获得与以前相同的顺序,我需要
df.reindex\u轴(反转(df.columns))
或类似的东西。@piRSquared是的,reindex\u轴
可能是更好的解决方案。