如何根据pandas中的其他列条件平均某一列的某些值

2024-04-27 00:31:45 发布

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

我有一个数据帧,比如:

Index    Date      Type  Value
0      01/01/2010    A    10
1      01/01/2010    B    15
2      01/01/2010    B    25
3      01/01/2010    A    12
4      01/02/2010    A    9
5      01/02/2010    B    17
6      01/02/2010    B    20
7      01/02/2010    A    8

我想创建一个新列,这样对于每一行,它将基于类型和基于日期的值取平均值,因此对于给定的日期,所有类型为a的行将具有相同的平均值,对于类型B也是相同的。例如,对于01/01/2010,所有类型为a的行将是(10+12)/2=11,所有类型为B的行将是(15+25)/2=20:

^{pr2}$

Tags: 数据类型dateindexvaluetype平均值行将
1条回答
网友
1楼 · 发布于 2024-04-27 00:31:45

您可能想要groupbytransform(虽然我不确定在您期望的输出中,01/02/2010B是{},我认为应该是18.5即17和20的平均值):

df['Value2'] = df.groupby(['Type','Date']).Value.transform('mean')
>>> df
   Index        Date Type  Value  Value2
0      0  01/01/2010    A     10    11.0
1      1  01/01/2010    B     15    20.0
2      2  01/01/2010    B     25    20.0
3      3  01/01/2010    A     12    11.0
4      4  01/02/2010    A      9     8.5
5      5  01/02/2010    B     17    18.5
6      6  01/02/2010    B     20    18.5
7      7  01/02/2010    A      8     8.5

相关问题 更多 >