是否可以使用 **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
抱歉,如果标题有点晦涩,我很乐意更改它..
问题: 我正在尝试在以下代码中使用关键字名称,以使用 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