pandas 分组并排序
时间: 2023-09-04 22:16:23 浏览: 84
可以使用 `groupby()` 方法对数据进行分组,然后再使用 `sort_values()` 方法对分组后的数据进行排序。
例如,假设有一个包含“姓名”、“年龄”和“成绩”的数据集,代码如下:
```python
import pandas as pd
data = {
'姓名': ['小明', '小红', '小刚', '小明', '小红', '小刚'],
'年龄': [18, 19, 20, 18, 19, 20],
'成绩': [85, 90, 92, 88, 89, 95]
}
df = pd.DataFrame(data)
```
现在,我们想按“姓名”分组,并按“成绩”进行排序,可以使用以下代码:
```python
grouped = df.groupby('姓名').apply(lambda x: x.sort_values('成绩', ascending=False))
```
这里,我们首先使用 `groupby()` 方法按“姓名”对数据进行分组,然后使用 `apply()` 方法对每个分组进行排序,并将结果保存在 `grouped` 变量中。
最后,我们可以使用 `reset_index()` 方法重置索引,去掉多余的索引级别:
```python
result = grouped.reset_index(drop=True)
```
这样,就可以得到按“姓名”分组并按“成绩”排序的结果。
相关问题
pandas分组日期排序
在pandas中,可以使用.groupby()方法根据日期进行分组,然后使用.sort_values()方法对分组后的数据进行排序。
首先,我们需要将日期列转换为pandas的日期时间类型,以便进行日期相关的操作。可以使用to_datetime()方法将日期列转换为日期时间类型。
例如,假设我们有一个名为df的dataframe,其中包含日期列为"date"。我们想要按照日期对数据进行分组并进行排序。可以按照以下步骤进行操作:
1. 将日期列转换为日期时间类型:
df["date"] = pd.to_datetime(df["date"])
2. 对数据进行分组:
grouped_data = df.groupby(df["date"].dt.date)
这样就会根据日期列对数据进行分组。
3. 进行排序:
sorted_data = grouped_data.sort_values(by="date")
这样就会根据日期对每个分组进行排序。
完整的代码如下所示:
```python
import pandas as pd
# 将日期列转换为日期时间类型
df["date"] = pd.to_datetime(df["date"])
# 对数据进行分组
grouped_data = df.groupby(df["date"].dt.date)
# 进行排序
sorted_data = grouped_data.sort_values(by="date")
```
这样,我们就可以按照日期对数据进行分组和排序了。
pandas 分组计数并排序
可以使用 pandas 的 groupby 函数实现分组计数,然后再对计数结果进行排序。例如:
```python
import pandas as pd
# 创建示例数据
data = {
'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva', 'Frank', 'Alice', 'Bob', 'Charlie'],
'age': [25, 36, 28, 24, 27, 32, 24, 35, 29],
'gender': ['F', 'M', 'M', 'M', 'F', 'M', 'F', 'M', 'M']
}
df = pd.DataFrame(data)
# 分组计数并排序
result = df.groupby('name').size().reset_index(name='count').sort_values(by='count', ascending=False)
# 输出结果
print(result)
```
输出结果:
```
name count
0 Alice 2
1 Bob 2
2 Charlie 2
3 David 1
4 Eva 1
5 Frank 1
```
以上代码首先使用 groupby 函数按照 name 列进行分组,并使用 size 函数计算每个分组的大小(即计数)。然后使用 reset_index 函数将分组结果转换为 DataFrame,并将 count 列命名为 'count'。最后使用 sort_values 函数按照 count 列进行降序排序。
阅读全文