我怎样才能在Python的群体中平均?

2024-06-02 05:48:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个数据集:

Participant   Type   Rating 
1              A       6
1              A       5
1              B       4
1              B       3
2              A       9
2              A       8
2              B       7
2              B       6

我想得到这个:

Type   MeanRating
A        mean(6,9)
A        mean(5,8)
B        mean(4,7)
B        mean(3,6)

所以,对于每种类型,我想要每组中较高值的平均值,然后是每组中第二个较高值的平均值,以此类推

我想不出一个合适的方法来处理python pandas,因为这些方法似乎总是适用于组内,而不是跨组。你知道吗


Tags: 数据方法类型pandastypemean平均值rating
1条回答
网友
1楼 · 发布于 2024-06-02 05:48:58

首先使用^{}创建一个列,允许您对齐最高值、次高值等。然后使用新创建的列执行另一个groupby来计算平均值:

# Get the grouping column.
df['Grouper'] = df.groupby(['Type', 'Participant']).rank(method='first', ascending=False)

# Perform the groupby and format the result.
result = df.groupby(['Type', 'Grouper'])['Rating'].mean().rename('MeanRating')
result = result.reset_index(level=1, drop=True).reset_index()

结果输出:

  Type  MeanRating
0    A         7.5
1    A         6.5
2    B         5.5
3    B         4.5

我使用了groupby.rankmethod='first'参数来处理['Type', 'Participant']组中出现重复评级的情况。如果您的数据集中不可能出现这种情况,您可以省略它,但是如果您保留它并且没有重复项,它将不会更改输出。你知道吗

相关问题 更多 >