Python 是否可以使用**kwargs中的关键字名称来过滤我的数据帧?

Python 是否可以使用**kwargs中的关键字名称来过滤我的数据帧?,python,dataframe,keyword-argument,Python,Dataframe,Keyword Argument,抱歉,如果标题有点模糊,我很乐意更改它 问题:我试图在以下代码中使用关键字名称,以使用pandas按数据帧中的列名进行筛选 @staticmethod def filter_json(json, col_filter, **kwargs): ''' Convert and filter a JSON object into a dataframe ''' df = pd.read_json(json).drop(col_filter, axis=1)

抱歉,如果标题有点模糊,我很乐意更改它

问题:我试图在以下代码中使用关键字名称,以使用pandas按数据帧中的列名进行筛选

@staticmethod
def filter_json(json, col_filter, **kwargs):
    '''
        Convert and filter a JSON object into a dataframe
    '''
    df = pd.read_json(json).drop(col_filter, axis=1)
    for arg in kwargs:
        df = df[(df.arg.isin(kwargs[arg]))]
    return df
但是,我得到了错误
AttributeError:“DataFrame”对象没有属性“arg”
,因为
arg
df.arg.isin(kwargs[arg])行不是有效的列名(有意义)]

我正在使用以下命令调用该方法

filter_json(json_obj, MY_COL_FILTERS, IsOpen=['false', 0])
含义
df.arg
本质上应该是
df.IsOpen


问题:这里有没有办法使用
arg
作为我的列名(
IsOpen
)?您也可以使用
dataframe[columnname]
符号访问列,而不必手动将其作为
df.IsOpen
输入:

尝试:


正是我想要的,谢谢!您可能需要检查循环体是否正确。您正在为每个关键字参数覆盖
df
变量。我刚刚运行了它,它按照预期使用多个条件进行筛选。例如,
filter\u json(json\u obj,MY\u COL\u FILTERS,IsOpen=['false',0],Disabled=['true',1])
返回任何未打开和禁用的内容。酷。很高兴它能按预期工作。
for arg in kwargs:  # arg is 'IsOpen'
        df = df[(df[arg].isin(kwargs[arg]))]  # df['IsOpen'] is same as df.IsOpen