根据与其他值的接近程度找到 pandas 数据框中一组索引值的平均值

问题描述 投票:0回答:1

A 列有一个数字范围。我想将 A 列中的每个数字与其他每个数字进行比较。我想要差值小于/等于 2 的所有值的每个数字的平均值。所需的输出将在 B 列中。这是在 Excel 中有效的解决方案:

=AVERAGE(IF(INDEX(ABS($A$1:$A$5-TRANSPOSE($A$1:$A$5)),,ROW(B1))<2,$A$1:$A$5))

但是,现在我正在尝试学习Python,并希望将解决方案移至那里。任何帮助将不胜感激。

python pandas numpy
1个回答
0
投票
a = np.array([4798,4802,4803,4805,4809])
a - np.nanmean(np.where(abs(b := a - a[:,None]) <= 2, b, np.nan), 0)

array([4798.        , 4802.5       , 4803.33333333, 4804.        ,
       4809.        ])
© www.soinside.com 2019 - 2024. All rights reserved.