举例说明dataframe.groupby函数使用apply(lambda x:)后作为新的一列放入原来的dataframe里
时间: 2024-04-01 22:06:18 浏览: 148
要将 `groupby` 函数与 `apply(lambda x:)` 结果作为新的一列添加到原始 DataFrame 中,可以使用 `transform` 函数。下面是一个示例:
```python
import pandas as pd
# 创建示例 DataFrame
df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar'],
'B': [1, 2, 3, 4, 5, 6],
'C': [7, 8, 9, 10, 11, 12]})
# 使用 groupby 和 apply 结合,并将结果作为新的一列添加到原始 DataFrame
df['new_column'] = df.groupby('A')['B'].transform(lambda x: x.mean())
print(df)
```
以上示例中,我们创建了一个 DataFrame 对象 `df`,包含了列 `'A'`、`'B'` 和 `'C'`。
然后,我们使用 `groupby('A')` 对 DataFrame 进行分组,按列 `'A'` 进行分组。
接着,我们使用 `apply(lambda x: x.mean())` 对每个分组应用自定义的函数。这个函数的功能是计算每个分组中 `'B'` 列的平均值。
最后,我们通过 `transform` 函数将应用结果作为新的一列 `'new_column'` 添加到原始 DataFrame 中。
输出结果将是包含了新的一列 `'new_column'` 的原始 DataFrame:
```
A B C new_column
0 foo 1 7 3.0
1 bar 2 8 4.0
2 foo 3 9 3.0
3 bar 4 10 4.0
4 foo 5 11 3.0
5 bar 6 12 4.0
```
其中,新的一列 `'new_column'` 包含了每个分组中 `'B'` 列的平均值,并在每个相应的行上重复显示。
阅读全文