同事,我遇到了一个无法理解的方法行为,pandas.series.rolling请解释。为了研究,让我们采用以下人工代码:
import pandas as pd
def rolling_print(x):
print(x)
return float('nan')
ser = pd.Series([1, 2, 3, 5, 6, 7, 8, 9])
print(ser)
ser.rolling(5).apply(rolling_print)
解释一下:我们取pandas.series1int到9,把window 5的方法应用到这一系列rolling(window的值是多少无所谓,sint和s我都试过了datetime),然后apply用help调用函数显示每个窗口的数据。所以,在输出的时候,很明显数据已经由 变成int了float。即1.0, 2.0...,等。为什么?float('nan')(用任何类型常量替换返回的数据并int没有改变结果)
正如 BUG 讨论中所写:Pandas 滚动窗口总是转换为浮动 #53214
就是这样。