假设我的数据框df具有以下列序列:
['e', 'f', 'c', 'd', 'a', 'b']
Run Code Online (Sandbox Code Playgroud)
我想在保持成对的情况下反转序列,从而产生以下序列:
['a', 'b', 'c', 'd', 'e', 'f']
Run Code Online (Sandbox Code Playgroud)
如果列名称始终相同,我可以使用上面的相同列表来生成所需的数据框:
df = df[['a', 'b', 'c', 'd', 'e', 'f']]
Run Code Online (Sandbox Code Playgroud)
但是,如果可以有多对列并且不确定它们的名称,唯一确定的是最后一对应该排在第一位,依此类推,如何进行?
你可以试试:
new_cols = df.columns.to_numpy().reshape(-1,2)[::-1].ravel()
print(df[new_cols])
Run Code Online (Sandbox Code Playgroud)
或者由于该sorted方法是稳定的,您可以按对顺序反向排序:
n,N = 2,len(df.columns)
df.iloc[:, sorted(range(N), key=lambda x: x//n, reverse=True)]
Run Code Online (Sandbox Code Playgroud)