Pandas - 滚动平均值给出了一个 NaN 列?

时间:2021-06-06 02:03:09

标签: python pandas

我有一堆数字:

df
        close
0       3247.50
1       3247.00
2       3247.25
3       3248.50
4       3249.25

#dtype: float64

当我尝试时:

df['testma'] = df['close'].rolling(window=2, min_periods=(2)).mean()  # considering full session

输出是一个 NaN 列。我想不出发生这种情况的任何原因。该代码适用于其他数据帧。

关于我可以尝试什么的任何想法?

2 个答案:

答案 0 :(得分:2)

min_periods 更改为 1

df['testma'] = df['close'].rolling(window=2, min_periods=1).mean()  
df
     close    testma
0  3247.50  3247.500
1  3247.00  3247.250
2  3247.25  3247.125
3  3248.50  3247.875
4  3249.25  3248.875

答案 1 :(得分:0)

尝试自己运行代码,似乎出现了预期的结果(即第一个单元格上的 NaN,因为没有 2 个值可以从中计算平均值)。

import pandas as pd

df = pd.DataFrame({'close': [3247.50, 3247.00, 3247.25, 3248.50, 3249.25]})
df['testma'] = df['close'].rolling(window=2, min_periods=(2)).mean()

df.head()
<头>
关闭 testma
0 3247.50 NaN
1 3247.00 3247.250
2 3247.25 3247.125
3 3248.50 3247.875
4 3249.25 3248.875

如果问题只是第一个值是 NaN,那么可以使用 min_periods 参数解决。

import pandas as pd

df = pd.DataFrame({'close': [3247.50, 3247.00, 3247.25, 3248.50, 3249.25]})
df['testma'] = df['close'].rolling(window=2, min_periods=(1)).mean()

df.head()
<头>
关闭 testma
0 3247.50 3247.500
1 3247.00 3247.250
2 3247.25 3247.125
3 3248.50 3247.875
4 3249.25 3248.875
相关问题