首页 > 解决方案 > 滚动应用函数必须是实数,而不是 Nonetype

问题描述

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

但我得到了错误说

File "pandas/_libs/window.pyx", line 1649, in pandas._libs.window.roll_generic
TypeError: must be real number, not NoneType

我的代码如下

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


def example():

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

  df.rolling(5).apply(print_window)

我的数据就像

number    sum   mean 
  1        1     1
  2        3     1.5
  3        6     2
  4       10     2.5
  5       15     3
  6       20     4

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

谢谢 !

标签: pythonpandas

解决方案


这种行为出现在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)

推荐阅读