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

Is it possible to use a keyword name from **kwargs to filter my data frame?

抱歉,如果标题有点晦涩,我很乐意更改它..

问题: 我正在尝试在以下代码中使用关键字名称,以使用 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' object has no attribute 'arg',因为 arg 不是第 df.arg.isin(kwargs[arg]))]

行的有效列名(有意义)

我正在调用以下方法...

filter_json(json_obj, MY_COL_FILTERS, IsOpen=['false', 0])

意思是df.arg本质上应该是df.IsOpen

问题:有没有办法用arg作为我这里的列名(IsOpen) ?而不是我必须手动输入 df.IsOpen

您也可以使用 dataframe[columnname] 符号访问列:https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html

尝试:

for arg in kwargs:  # arg is 'IsOpen'
        df = df[(df[arg].isin(kwargs[arg]))]  # df['IsOpen'] is same as df.IsOpen