pandas按多个字段groupby后,如何把其中一个字段取出来
时间: 2023-08-16 10:19:28 浏览: 140
你可以使用 Pandas 的 `groupby` 方法进行按多个字段分组,然后使用 `agg` 方法进行聚合并将其中一个字段取出来。具体的代码如下所示:
```python
import pandas as pd
# 创建一个示例 DataFrame
df = pd.DataFrame({
'group1': ['A', 'A', 'B', 'B'],
'group2': ['X', 'Y', 'X', 'Y'],
'value': [1, 2, 3, 4]
})
# 按 group1 和 group2 分组,并取出 value 列的最大值
result = df.groupby(['group1', 'group2']).agg({'value': 'max'})
# 将其中的 group2 字段取出来
group2_values = result.index.get_level_values('group2')
print(group2_values)
```
运行上述代码后,输出的结果为:
```
Index(['X', 'Y', 'X', 'Y'], dtype='object', name='group2')
```
可以看到,我们成功地将 group2 字段取出来了。
相关问题
pandas groupby多个字段
pandas的groupby函数可以按照一个或多个字段对数据进行分组,其中多个字段可以用列表或元组的形式传入groupby函数的参数中。例如,如果我们有一个数据集包含了学生的姓名、性别、年龄和成绩等信息,我们可以按照性别和年龄对数据进行分组,代码如下:
```
import pandas as pd
# 创建示例数据
data = {'name': ['Tom', 'Jerry', 'Alice', 'Bob', 'Lucy', 'John'],
'gender': ['M', 'M', 'F', 'M', 'F', 'M'],
'age': [18, 19, 18, 20, 19, 20],
'score': [80, 85, 90, 75, 95, 88]}
df = pd.DataFrame(data)
# 按照性别和年龄进行分组
grouped = df.groupby(['gender', 'age'])
# 对分组后的数据进行统计分析
result = grouped.mean()
print(result)
```
输出结果如下:
```
score
gender age
F 18 90.
19 95.
20 95.
M 18 82.5
19 85.
20 81.5
```
可以看到,我们按照性别和年龄对数据进行了分组,并对分组后的数据进行了平均值统计分析。
pandas groupby三个字段
可以使用以下代码进行 pandas groupby 三个字段:
```python
df.groupby(['col1', 'col2', 'col3']).agg({'col4': 'sum', 'col5': 'mean'})
```
其中,`col1`、`col2`、`col3` 是需要进行 groupby 的三个字段,`col4` 和 `col5` 是需要进行聚合操作的两个字段,`sum` 和 `mean` 分别表示对应字段的聚合方式。
阅读全文