我有以下数据帧:在大熊猫计算元件的第n个数量的平均值在列
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
和之间的下一个单元格等。对于列号a
,b
和c
也是如此。而计算总是从index = 1
开始。
而问题在于列数如a
,b
,c
可以不同。但我知道这些列将始终在列week
之后。是否可以将这些计算应用于无限数量的列,但是如果知道这些列将位于列week
之后?
我尽力找到任何东西,但找不到合适的东西。
UPD:如果这有帮助,index = 0
的最大行数将是53
。
当你说“那么对于下一个单元格'1'和'-9'等之间”,这是否意味着A)计算之间'平均-9 '和'0',并忽略'1'中的'NaN',或者b)使用在前面的“迭代”中针对'1'计算的新值计算'-9'和'1'之间的平均值? – jdehesa
@jdehesa,是的,我需要在单元格'1'中使用一个新值,就像你在b)中所描述的那样。 –
你可以实际使用loc切片运算符,然后下降到只得到a,b,c列(df1.loc [:,'week':]。drop('week',axis = 1)。我认为没有纯粹的熊猫解决方案(除非一些熊猫魔术师提出)来做移动平均思维(因为你想平均在先前计算的平均值),你可能必须使用python循环。如果性能很关键,你可以看一看cython或numba来加速循环。 –