Python Pandas-TypeError:';的操作数类型不受支持;int';和';非类型';

Python Pandas-TypeError:';的操作数类型不受支持;int';和';非类型';,python,pandas,Python,Pandas,我正在构建一个函数,它使用条件掩码来过滤给定的数据帧,其中所有参数都必须用None初始化,如下所示: def filter_dataframe(self, dataframe, position_id=None, team_id=None, home=None, window=None): df = dataframe.copy() now = self.get_now() masks = { "

我正在构建一个函数,它使用条件掩码来过滤给定的数据帧,其中所有参数都必须用
None
初始化,如下所示:

def filter_dataframe(self, dataframe, position_id=None, team_id=None, home=None, window=None):

        df = dataframe.copy()
        now = self.get_now()
        
        masks = {
            "mask1": [position_id is not None, df[df["position_id"] == position_id]],
            "mask2": [team_id is not None, df[df["team_id"] == team_id]],
            "mask3": [home == "Home", df[df["home_dummy"] == 1.0]],
            "mask4": [home == "Away", df[df["home_dummy"] == 0.0]],
            "mask5": [window is not None, df[df["gameweek"].between((now - window),now)]]            
            }
        for value in masks.values():
            if value[0]:
                df = value[1]
            return df

这里的问题是,当使用
None
初始化arg'window'时,python会抛出错误,因为它是操作的一部分:

"mask5": [window is not None, df[df["gameweek"].between((now - window),now)]] 
TypeError: unsupported operand type(s) for -: 'int' and 'NoneType'


如何处理窗口在(现在-窗口)中为
None
in时的情况以避免此错误?感谢

最简单的解决方案可能是在定义masks变量时对表达式中的窗口添加if检查,例如

"mask5": [window is not None, df[df["gameweek"].between((now - window if window is not None else 0),now)]] 
更好的解决方案是将掩码操作转换为lambda,以防止不必要的计算

"mask5": [window is not None, lambda: df[df["gameweek"].between((now - window,now)]]
然后,您可以在for循环中调用lambda函数,如果它们各自的条件匹配

df = value[1]()

now-window
中的
window
为None时,您可能需要处理此情况。是。。。但是怎么做?你没有解释你想做什么。为什么要问别人怎么做?问题显然是如何处理这个错误。这是个问题。但如果还不够清楚,我已经对问题进行了编辑,使其更加明确。