python的.groupby.mean函数后,字段消失
时间: 2023-09-10 20:09:00 浏览: 112
在Python中,使用.groupby.mean()函数对数据进行分组并计算平均值时,结果会以分组的键作为索引,其他字段则会被排除。这是因为.mean()函数的操作是对分组后的数据进行聚合计算,只返回聚合结果。
如果你希望保留其他字段,可以使用.groupby()函数进行分组,然后使用.aggregate()函数对每个分组进行多个操作,包括计算平均值。例如:
```python
import pandas as pd
# 创建示例数据
data = {'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
'B': ['one', 'one', 'two', 'two', 'two', 'one', 'two', 'one'],
'C': [1, 2, 3, 4, 5, 6, 7, 8],
'D': [9, 10, 11, 12, 13, 14, 15, 16]}
df = pd.DataFrame(data)
# 使用.groupby().aggregate()保留其他字段
result = df.groupby(['A', 'B']).aggregate({'C': 'mean', 'D': 'sum'})
print(result)
```
这样可以对字段'C'计算平均值,同时对字段'D'进行求和,结果会保留分组的键以及计算结果。
相关问题
python groupby多字段取平均值
好的,让我来回答您的问题。首先您可以使用 Python 中的 `groupby()` 函数来按照多个字段对数据进行分组,然后可以使用 `mean()` 函数计算每个分组的平均值。
下面是一个使用 `groupby()` 和 `mean()` 函数的示例代码:
```python
from itertools import groupby
from operator import itemgetter
data = [
{'name': 'Alice', 'age': 25, 'loc': 'Beijing', 'score': 80},
{'name': 'Bob', 'age': 30, 'loc': 'Shanghai', 'score': 90},
{'name': 'Charlie', 'age': 25, 'loc': 'Beijing', 'score': 85},
{'name': 'David', 'age': 35, 'loc': 'Shanghai', 'score': 95},
{'name': 'Eric', 'age': 25, 'loc': 'Beijing', 'score': 75},
{'name': 'Frank', 'age': 30, 'loc': 'Shanghai', 'score': 91},
]
# 先按照 loc 和 age 字段进行排序,再进行分组
data.sort(key=itemgetter('loc', 'age'))
groups = groupby(data, key=itemgetter('loc', 'age'))
for cur_key, cur_group in groups:
# 计算当前分组的平均分数
cur_scores = [item['score'] for item in cur_group]
cur_avg_score = sum(cur_scores) / len(cur_scores)
# 输出分组的信息和平均分数
print(f"Location: {cur_key[0]}, Age: {cur_key[1]}, Avg score: {cur_avg_score:.2f}")
```
输出结果如下:
```
Location: Beijing, Age: 25, Avg score: 80.00
Location: Beijing, Age: 25, Avg score: 80.00
Location: Beijing, Age: 25, Avg score: 75.00
Location: Shanghai, Age: 30, Avg score: 90.50
Location: Shanghai, Age: 30, Avg score: 91.00
Location: Shanghai, Age: 35, Avg score: 95.00
```
您可以看到,上述代码将输入数据按照 loc 和 age 两个字段进行排序,并按照这两个字段分组。然后,计算每个分组的平均分数并输出结果。
希望这可以帮助您解决问题。
Pandas.groupby释义
Pandas的`groupby()`函数是用于数据分析中的一种强大工具,它允许我们将数据集按照一个或多个列的值进行分组,然后对每个组执行聚合操作,如计算平均值、总和、计数等。这里有两个例子:
1. **按单一字段分组**[^1]:
```python
df = pd.read_csv("文件路径")
group_by_column = df["列名1"].groupby(df["列名2"])
```
这里,`df["列名2"]`是我们要依据其值进行分组的列。`group_by_column`现在包含了各个"列名2"的子集,可以进一步调用聚合函数来处理这些子集。
2. **多字段分组并计算平均值**:
```python
group = df["列名1"].groupby([df["列名2"],df["列名3"]])
group_mean = group.mean()
```
这里,我们按两个字段`"列名2"`和`"列名3"`进行分组,然后计算结果集中`"列名1"`的平均值。`group_mean`会返回一个新的DataFrame,其中每一行对应于一个分组,每一列则是相应字段的平均值。
阅读全文