pandas增加一列排名
时间: 2023-11-22 16:50:57 浏览: 221
可以使用`rank()`函数在Pandas中增加一列排名。下面是一个示例代码:
```python
import pandas as pd
# 创建一个DataFrame
data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Emily'],
'score': [80, 90, 70, 60, 85]}
df = pd.DataFrame(data)
# 使用rank()函数增加一列排名
df['rank'] = df['score'].rank(ascending=False)
# 打印输出DataFrame
print(df)
```
输出结果如下:
```
name score rank
0 Alice 80 3.0
1 Bob 90 1.0
2 Charlie 70 4.0
3 David 60 5.0
4 Emily 85 2.0
```
在上面的代码中,我们首先创建了一个包含姓名和分数的DataFrame。然后,使用`rank()`函数对分数列进行排名,并将排名结果存储在一个新的列中。最后,打印输出包含排名结果的DataFrame。
相关问题
pandas 按某列值排序后,新增一列排名
在pandas中,你可以通过`sort_values()`对数据框按照指定列进行排序,然后利用`rank()`函数为每个行添加一个新的排名列。以下是如何操作的一个简单步骤:
```python
import pandas as pd
# 假设df是一个数据框,你想要按'score'列排序
df = pd.DataFrame({
'Name': ['Tom', 'Nick', 'John', 'Tom', 'John'],
'score': [80, 90, 75, 85, 95],
})
# 首先按'score'列降序排序
sorted_df = df.sort_values(by='score', ascending=False)
# 然后计算排名,method参数可以选择'average'(平均排名),'min'(最小计数排名),默认为'first'(第一个计数排名)
sorted_df['Rank'] = sorted_df.groupby('score').ngroup() + 1
print(sorted_df)
```
这将输出一个新的数据框,其中原有的'score'列保持不变,并且添加了一个新的'Rank'列,表示每个记录在得分相同的情况下按照排序顺序给出的排名。
根据某一列排名并将排名添加至新的一列
要根据DataFrame中的某一列进行排名,并将排名添加到新的一列中,可以使用pandas的`rank()`函数。下面是一个示例代码:
```python
import pandas as pd
# 创建示例DataFrame
data = {'A': [10, 20, 30, 40]}
df = pd.DataFrame(data)
# 添加排名列
df['Rank'] = df['A'].rank()
# 打印结果
print(df)
```
在上述代码中,我们创建了一个示例的DataFrame `df`,其中列"A"包含了一些数值。然后,我们使用`rank()`函数对列"A"中的数值进行排名,并将排名结果添加到新的列"Rank"中。
这样,你就可以得到一个新的DataFrame `df`,其中包含了原始数据以及根据列"A"进行排名后的结果。
需要注意的是,默认情况下,`rank()`函数会给出相同数值的元素相同的排名,并且使用平均排名方式处理相同排名的情况。如果你想改变排名方式,可以参考pandas文档中关于`rank()`函数的更多参数和选项。
阅读全文
相关推荐
















