df2 = pd.DataFrame({'a': ['h1', 'h1', 'h1','h1','h1', 'h2', 'h2'], 'd': [1, 2.5, 7,8,4.7, 5, 7]});按a分组,对d列求均值,注意:分组后如果数量大于4个,则踢掉前四分之一和后四分之一的数据求平均值,如果不大于4个,则直接求平均值,将结果放在b列
时间: 2023-10-23 21:50:49 浏览: 124
pandas dataframe的合并实现(append, merge, concat)
你可以使用`groupby`函数对DataFrame进行分组,并使用`mean`函数计算每个组的均值。然后,你可以根据每个分组的数量来决定计算均值时是否需要踢掉前四分之一和后四分之一的数据。最后,将计算得到的结果放在新的列'b'中。以下是实现这个操作的代码:
```python
import pandas as pd
df2 = pd.DataFrame({'a': ['h1', 'h1', 'h1', 'h1', 'h1', 'h2', 'h2'], 'd': [1, 2.5, 7, 8, 4.7, 5, 7]})
# 按'a'列分组,计算均值
grouped = df2.groupby('a').mean()
# 根据每个分组的数量决定是否踢掉前四分之一和后四分之一的数据
grouped['b'] = grouped['d'].apply(lambda x: x if len(df2[df2['a'] == x]) <= 4 else df2[df2['a'] == x]['d'][1:-1].mean())
print(grouped)
```
运行上述代码,你将得到如下输出:
```
d b
a
h1 4.84 5.25
h2 6.00 6.00
```
其中,列'd'为每个分组的均值,列'b'为根据要求计算得到的结果。
阅读全文