Python Pandas-使用两列中的标准计算平均值



我正试图使用其他两列的选择标准来计算Pandas数据帧列的平均值。在下面的代码中,有一个"Trace"one_answers"Sample"列将用于选择条件,而"Value"列中的数字将用于计算。我想按"Trace"数字分组,只取"Sample"数字3、4和5的平均值。然后,我想在原始数据帧"df"中创建一个新列,并将计算出的平均值放在与正确的"Trace"编号对应的所有行中。

d = {"Trace": [1,1,1,1,1,2,2,2,2,2], "Sample": [1,2,3,4,5,1,2,3,4,5], "Value": [2,3,5,6,1,8,9,5,4,3]}

有什么想法吗?

谢谢!

您可以尝试一下,先过滤您的数据帧,然后用均值分组,然后在"Trace"上连接回原始数据帧(这是数据帧之间的通用列名,在groupby的结果上为reset_index(:

df[df['Sample'].isin([3,4,5])].groupby('Trace')['Value'].mean()
.rename('Avg Value').reset_index().merge(df)

输出:

Trace  Avg Value  Sample  Value
0      1          4       1      2
1      1          4       2      3
2      1          4       3      5
3      1          4       4      6
4      1          4       5      1
5      2          4       1      8
6      2          4       2      9
7      2          4       3      5
8      2          4       4      4
9      2          4       5      3

df.groupby('Trace')
.apply(lambda x: x.loc[x['Sample'].isin([3,4,5]),'Value'].mean())
.rename('Avg Value').reset_index().merge(df)

输出:

Trace  Avg Value  Sample  Value
0      1        4.0       1      2
1      1        4.0       2      3
2      1        4.0       3      5
3      1        4.0       4      6
4      1        4.0       5      1
5      2        4.0       1      8
6      2        4.0       2      9
7      2        4.0       3      5
8      2        4.0       4      4
9      2        4.0       5      3

最新更新