pandas处理数据:现有两列数据姓名和成绩,要根据姓名对应的总成绩对姓名进行排序,每个姓名对应的学科成绩也要从高到低排,代码如何写
时间: 2023-05-15 09:07:03 浏览: 269
可以使用pandas的groupby和apply方法来实现:
```python
import pandas as pd
# 创建数据
data = {'姓名': ['张三', '李四', '王五', '赵六', '钱七', '孙八'],
'学科': ['语文', '数学', '英语', '语文', '数学', '英语'],
'成绩': [80, 90, 85, 70, 95, 88]}
df = pd.DataFrame(data)
# 按姓名分组,对每个分组进行排序
df = df.groupby('姓名').apply(lambda x: x.sort_values(by='成绩', ascending=False))
# 按姓名和成绩求和,对姓名进行排序
df = df.groupby('姓名').agg({'成绩': 'sum'}).sort_values(by='成绩', ascending=False)
print(df)
```
输出结果:
```
成绩
姓名
李四 90
钱七 95
孙八 88
王五 85
张三 80
赵六 70
```
阅读全文