Python 是否可以使用**kwargs中的关键字名称来过滤我的数据帧?
抱歉,如果标题有点模糊,我很乐意更改它 问题:我试图在以下代码中使用关键字名称,以使用pandas按数据帧中的列名进行筛选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)
@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