gpt4 book ai didi

python - 计算pandas中列中第n个元素的平均值

转载 作者:太空宇宙 更新时间:2023-11-03 10:54:03 24 4
gpt4 key购买 nike

我有以下数据框:

             df1
index year week a b c
-10 2017 10 45 26 19
-9 2017 11 37 23 14
-8 2017 12 21 66 19
-7 2017 13 47 36 92
-6 2017 14 82 65 18
-5 2017 15 68 68 19
-4 2017 16 30 95 24
-3 2017 17 21 15 94
-2 2017 18 67 30 16
-1 2017 19 10 13 13
0 2017 20 26 22 18
1 2017 21 NaN NaN NaN
2 2017 22 NaN NaN NaN
3 2017 23 NaN NaN NaN
4 2017 24 NaN NaN NaN
...
53 2018 20 NaN NaN NaN

我需要为每个空单元格计算列中前 n 个值的平均值,并将该值写入单元格。 n 等于从零开始的索引数。例如,对于 a 列中的第一个空单元格,我必须计算索引 0-10 之间的平均值。然后是 1-9 之间的下一个单元格,依此类推。 abc 列也是如此。计算总是从 index = 1 开始。

而且问题是abc等列的数量可以不同。但我知道这些列总是在 week 列之后。是否可以将这些计算应用于不确定数量的列,但如果已知这些列将位于 week 列之后?

我努力寻找任何东西,但找不到合适的东西。

UPD:如果这有帮助,从 index = 0 开始的最大行数将为 53

最佳答案

这可以像下面这样完成:

n = 11 # in the example of your explanation
df = df1.loc[range(1,df1.index[-1]+1)] # select rows from index 1 above

df 应该是这样的:

       year  week   a   b   c
index
1 2017 21 NaN NaN NaN
2 2017 22 NaN NaN NaN
3 2017 23 NaN NaN NaN
4 2017 24 NaN NaN NaN

然后你:

for s in list(df.index): # iterate through rows with nan values
for i in range(2,df.columns.size): # iterate through different cols ('a','b','c' or more)
df1.loc[s,df.columns[i]] = df1.loc[range(s-n,s),df.columns[i]].sum()/n
print(df1)

请注意,在这种情况下,我按照您的示例进行操作,并假设 year 始终是第一列,week 始终是第二列,以便选择 之后的所有列weekindex 是..索引

输出:

       year  week          a          b          c
index
-10 2017 10 45.000000 26.000000 19.000000
-9 2017 11 37.000000 23.000000 14.000000
-8 2017 12 21.000000 66.000000 19.000000
-7 2017 13 47.000000 36.000000 92.000000
-6 2017 14 82.000000 65.000000 18.000000
-5 2017 15 68.000000 68.000000 19.000000
-4 2017 16 30.000000 95.000000 24.000000
-3 2017 17 21.000000 15.000000 94.000000
-2 2017 18 67.000000 30.000000 16.000000
-1 2017 19 10.000000 13.000000 13.000000
0 2017 20 26.000000 22.000000 18.000000
1 2017 21 41.272727 41.727273 31.454545
2 2017 22 40.933884 43.157025 32.586777
3 2017 23 41.291510 44.989482 34.276484
4 2017 24 43.136193 43.079434 35.665255

关于python - 计算pandas中列中第n个元素的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44904330/

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