滚动应用函数必须是实数,而不是Nonetype

wht*_*all 6 python pandas

我正在尝试使用滚动和应用功能来打印窗口

但我收到错误说

File "pandas/_libs/window.pyx", line 1649, in pandas._libs.window.roll_generic
TypeError: must be real number, not NoneType
Run Code Online (Sandbox Code Playgroud)

我的代码如下

def print_window(window):
  print(window)
  print('==================')


def example():

  df = pd.read_csv('window_example.csv')

  df.rolling(5).apply(print_window)
Run Code Online (Sandbox Code Playgroud)

我的数据就像

number    sum   mean 
  1        1     1
  2        3     1.5
  3        6     2
  4       10     2.5
  5       15     3
  6       20     4
Run Code Online (Sandbox Code Playgroud)

我应该如何解决这个错误?我没有找到有关此错误的类似问题

谢谢 !

A.V*_*non 5

这种行为出现在pandas=1.0.0. apply 的函数现在预计会返回一个值来影响相应的列。

https://pandas.pydata.org/pandas-docs/version/1.0.0/reference/api/pandas.core.window.rolling.Rolling.apply.html#pandas.core.window.rolling.Rolling.apply

您的代码的解决方法是:

def print_window(window):
  print(window)
  print('==================')
  return 0


def example():

  df = pd.read_csv('window_example.csv')

  df.rolling(5).apply(print_window)
Run Code Online (Sandbox Code Playgroud)