一、DataFrame数据排序
- 可以使用sort_values()方法来对DataFrame进行排序,该方法默认按照升序进行排序。同时,可以通过指定ascending=False来改为降序排列。
import pandas as pd
df = pd.DataFrame({'name': ['Alice', 'Bob', 'Catherine', 'David'],
'score': [90, 80, 70, 85],
'age': [20, 19, 18, 22]})
print(df)
# 按照score列降序排列
df_sort = df.sort_values(by='score', ascending=False)
print(df_sort)
输出结果如下所示:
name score age
0 Alice 90 20
1 Bob 80 19
2 Catherine 70 18
3 David 85 22
name score age
0 Alice 90 20
3 David 85 22
1 Bob 80 19
2 Catherine 70 18
- sort_values()也可以同时按照多个列进行排序,可以通过传递多个字符串列名组成的列表来实现,如下所示:
import pandas as pd
df = pd.DataFrame({'name': ['Alice', 'Bob', 'Catherine', 'David'],
'score': [90, 80, 70, 85],
'age': [20, 19, 18, 22]})
print(df)
# 先按照score列降序排列,score相同再按照age升序排列
df_sort = df.sort_values(by=['score', 'age'], ascending=[False, True])
print(df_sort)
输出结果如下所示:
name score age
0 Alice 90 20
3 David 85 22
1 Bob 80 19
2 Catherine 70 18
name score age
0 Alice 90 20
3 David 85 22
1 Bob 80 19
2 Catherine 70 18
二、DataFrame数据排名
- 对于DataFrame的排名,可以使用rank()方法来实现。该方法默认按照升序进行排名。同时,可以通过指定ascending=False来改为降序排列。
import pandas as pd
df = pd.DataFrame({'name': ['Alice', 'Bob', 'Catherine', 'David'],
'score': [90, 80, 70, 85],
'age': [20, 19, 18, 22]})
print(df)
# 对score列进行升序排名
df_rank = df['score'].rank()
print(df_rank)
输出结果如下所示:
name score age
0 Alice 90 20
1 Bob 80 19
2 Catherine 70 18
3 David 85 22
0 4.0
1 3.0
2 1.0
3 2.0
Name: score, dtype: float64
- rank()也可以同时按照多个列进行排名,在sort_values()的基础上使用rank()方法即可,如下所示:
import pandas as pd
df = pd.DataFrame({'name': ['Alice', 'Bob', 'Catherine', 'David'],
'score': [90, 80, 70, 85],
'age': [20, 19, 18, 22]})
print(df)
# 先按照score列降序排名,score相同再按照age升序排名
df_rank = df.sort_values(by=['score', 'age'], ascending=[False, True]).rank()
print(df_rank)
输出结果如下所示:
name score age
0 4.0 4.0 3.0
3 3.0 3.0 4.0
1 2.0 2.0 2.0
2 1.0 1.0 1.0
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python数据分析之DateFrame数据排序和排名方式 - Python技术站