gpt4 book ai didi

python - 如何使用Python计算最近三个非nan值的平均值

转载 作者:太空狗 更新时间:2023-10-29 21:38:32 27 4
gpt4 key购买 nike

我有一个数据框 df看起来像下面这样。我想计算最后 3 个非 nan 列的平均值。如果少于三个非缺失列,则平均数缺失。

name day1 day2 day3 day4  day5 day6 day7
A 1 1 nan 2 3 0 3
B nan nan nan nan nan nan 3
C 1 1 0 1 1 1 1
D 1 1 0 1 nan 1 4

预期输出应该如下所示

name day1 day2 day3 day4  day5 day6 day7    expected 
A 1 1 nan 2 3 0 3 2 <- 1/3*(day5 + day6 + day7)
B nan nan nan nan nan nan 3 nan <- less than 3 non-missing
C 1 1 0 1 1 1 1 1 <- 1/3*(day5 + day6 + day7)
D 1 1 0 1 nan 1 4 2 <- 1/3 *(day4 + day6 + day7)

我知道如何计算最后三列的平均值并计算有多少个非缺失观察值。 df.iloc[:, 5:7].count(axis=1) average of the last three column df.iloc[:, 5:7].count(axis=1) number of non-nan in the last three column

如果少于 3 个非缺失观察,我知道如何使用 df.iloc[:, 1:7].count(axis=1) <= 3 将平均值设置为缺失.

但我正在努力寻找一种方法来计算最后三个非缺失列的平均值。谁能教我如何解决这个问题?

最佳答案

使用 justify 向量化一个-

N = 3 # last N entries for averaging
avg = np.mean(justify(df.values,invalid_val=np.nan,axis=1, side='right')[:,-N:],1)
df['expected'] = avg

关于python - 如何使用Python计算最近三个非nan值的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53936985/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com