如何按索引排序Pandas数据框?

myzjeezk  于 2023-01-28  发布在  其他
关注(0)|答案(3)|浏览(129)

当存在如下所示的DataFrame时:

import pandas as pd
df = pd.DataFrame(1, index=[100, 29, 234, 1, 150], columns=['A'])

我如何在索引和列值的每个组合都保持不变的情况下按索引对这个 Dataframe 进行排序?

oyxsuwqo

oyxsuwqo1#

Dataframe 有一个sort_index方法,默认返回一个副本。传递inplace=True以就地操作。

import pandas as pd
df = pd.DataFrame([1, 2, 3, 4, 5], index=[100, 29, 234, 1, 150], columns=['A'])
df.sort_index(inplace=True)
print(df.to_string())

给我:

A
1    4
29   2
100  1
150  5
234  3
mcvgt66p

mcvgt66p2#

稍微更紧凑:

df = pd.DataFrame([1, 2, 3, 4, 5], index=[100, 29, 234, 1, 150], columns=['A'])
df = df.sort_index()
print(df)

注:

t9eec4r0

t9eec4r03#

如果DataFrame索引的名称为,则也可以使用sort_values()按名称排序。例如,如果索引的名称为lvl_0,则可以按此名称排序。如果 Dataframe 是从groupbypivot_table操作获得的,则这种特殊情况很常见。

df = df.sort_values('lvl_0')

如果索引具有名称,您甚至可以同时按**索引和列值进行排序。例如,下面的代码同时按索引和列A值进行排序:

df = df.sort_values(['lvl_0', 'A'])

如果有MultiIndex Dataframe ,则可以使用level=参数按索引级别排序。例如,如果要按第二级降序排序,按第一级升序排序,则可以使用以下代码执行此操作。

df = df.sort_index(level=[1, 0], ascending=[False, True])

如果索引有名字,同样,你可以调用sort_values(),例如,下面的代码按照索引'lvl_1''lvl_2'排序。

df = df.sort_values(['lvl_1', 'lvl_2'])

相关问题