如何重新排列/重新排序(不一定排序)pandas 数据帧索引?

ral*_*hqq 10 python dataframe pandas

如何重新排列/重新排序(不一定排序)pandas 数据帧索引?

我有以下数据框:

df = pd.DataFrame({'A': [1, 2, 3, 4, 5, 6, 7],
                   'B': [0, 1, 0, 2, 1, 7, 1]},
                  index=['Sat', 'Tue', 'Sun', 'Fri',
                         'Wed', 'Mon', 'Thu'])
Run Code Online (Sandbox Code Playgroud)

这使:

     A  B
Sat  1  0
Tue  2  1
Sun  3  0
Fri  4  2
Wed  5  1
Mon  6  7
Thu  7  1
Run Code Online (Sandbox Code Playgroud)

我想按星期几(即星期日、星期一、星期二、星期三、星期四、星期五、星期六)对索引进行排序。具有重新排列/重新排序索引的数据框应如下所示:

     A  B
Sun  3  0
Mon  6  7
Tue  2  1
Wed  5  1
Thu  7  1
Fri  4  2
Run Code Online (Sandbox Code Playgroud)

但是使用 df.sort_index() 会导致 df 的按字母顺序排序的索引。

如何明确指定数据帧索引的顺序?

我能想到的解决方案是在数据帧创建期间将所需的索引排序作为列表传递:

df = pd.DataFrame(df, index=['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri'])
Run Code Online (Sandbox Code Playgroud)

不创建另一个数据框的另一种方法是什么?

谢谢你。

Jul*_*nck 10

您可以loc按照您想要的顺序使用并为其提供索引列表:

df = pd.DataFrame({'A': [1, 2, 3, 4, 5, 6, 7],
                   'B': [0, 1, 0, 2, 1, 7, 1]},
                  index=['Sat', 'Tue', 'Sun', 'Fri',
                         'Wed', 'Mon', 'Thu'])
df = df.loc[['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], :]
df
#      A  B
# Sun  3  0
# Mon  6  7
# Tue  2  1
# Wed  5  1
# Thu  7  1
# Fri  4  2
# Sat  1  0
Run Code Online (Sandbox Code Playgroud)