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