我有一堆数字:
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
列。我想不出发生这种情况的任何原因。该代码适用于其他数据帧。
关于我可以尝试什么的任何想法?
答案 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 |