Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在对列应用滚动平均值时填充第一个N/A单元格-python_Python_Pandas_Rolling Average - Fatal编程技术网

如何在对列应用滚动平均值时填充第一个N/A单元格-python

如何在对列应用滚动平均值时填充第一个N/A单元格-python,python,pandas,rolling-average,Python,Pandas,Rolling Average,我需要对一列应用滚动平均值,如图1 s3所示,在应用滚动平均值并将windows设置为5后,我得到了正确的答案,但将前4行留空,如图2 sa3所示 我想用pic1 s3中直到当前行的所有数据的平均值填充pic2 sa3中的前4个空单元格,如pic3 a3所示 除了滚动平均法外,我如何使用一个简单的函数。 所以您要添加: df['sa3'].fillna(df['s3'].mean(), inplace=True) 希望我使用了正确的列名。您可以使用pandas查找滚动平均值,然后用零填充N

我需要对一列应用滚动平均值,如图1 s3所示,在应用滚动平均值并将windows设置为5后,我得到了正确的答案,但将前4行留空,如图2 sa3所示

我想用pic1 s3中直到当前行的所有数据的平均值填充pic2 sa3中的前4个空单元格,如pic3 a3所示

除了滚动平均法外,我如何使用一个简单的函数。

所以您要添加:

df['sa3'].fillna(df['s3'].mean(), inplace=True)

希望我使用了正确的列名。

您可以使用pandas查找滚动平均值,然后用零填充
NaN

使用类似以下内容:

col = [1,2,3,4,5,6,7,8,9]
df = pd.DataFrame(col)

df['rm'] = df.rolling(5).mean().fillna(value =0, inplace=False)
print df

   0   rm
0  1  0.0
1  2  0.0
2  3  0.0
3  4  0.0
4  5  3.0
5  6  4.0
6  7  5.0
7  8  6.0
8  9  7.0

我认为需要参数
min\u periods=1
in:

最小周期:int,默认无

窗口中需要有值的最小观察数(否则结果为NA)。对于由偏移指定的窗口,默认值为1

样本

np.random.seed(1256)

df = pd.DataFrame(np.random.randint(10, size=(10, 5)), columns=list('abcde'))
print (df)
   a  b  c  d  e
0  1  5  8  8  9
1  3  6  3  0  6
2  7  0  1  5  1
3  6  6  5  0  4
4  4  9  4  6  1
5  7  7  5  8  3
6  0  7  2  8  2
7  4  8  3  5  5
8  8  2  0  9  2
9  4  7  1  5  1

df = df.rolling(5, min_periods=1).mean()
print (df)
          a         b     c         d         e
0  1.000000  5.000000  8.00  8.000000  9.000000
1  2.000000  5.500000  5.50  4.000000  7.500000
2  3.666667  3.666667  4.00  4.333333  5.333333
3  4.250000  4.250000  4.25  3.250000  5.000000
4  4.200000  5.200000  4.20  3.800000  4.200000
5  5.400000  5.600000  3.60  3.800000  3.000000
6  4.800000  5.800000  3.40  5.400000  2.200000
7  4.200000  7.400000  3.80  5.400000  3.000000
8  4.600000  6.600000  2.80  7.200000  2.600000
9  4.600000  6.200000  2.20  7.000000  2.600000

我明白了,有些答案是处理空值并用平均值替换,有些答案是创建滚动平均值,但不是用它替换空值。所以我自己算出了代码,把它贴在这里

df['Col']= df['Col'].fillna(df['Col'].rolling(4,center=True,min_periods=1).mean())
'4'
是滚动窗口的长度
<代码>中心= Trime< /Cord>指示替换的值将考虑上述值的一半和低于空值的一半值来替换.< /P>谢谢,但是我可能不清楚地描述我的问题,但是JeZraL提供了我想要感谢的答案,但是我需要更精确的数字,但是我有0个用于不能计算的答案,只是不是所有人,贾泽拉尔给我想要问的答案
df['Col']= df['Col'].fillna(df['Col'].rolling(4,center=True,min_periods=1).mean())