Python 如何在pandas中运行多个筛选器?

Python 如何在pandas中运行多个筛选器?,python,pandas,filter,Python,Pandas,Filter,我想在不同的列上运行多个过滤器,如“频率”、“小数位数”和“受众”,如“全部”和“维度”=“活动”和KPI名称=“本田2018…”,这些都是从pandas中导入的excel表中获得的。我正在运行以下代码: def filter_df(df,*args): 对于参数中的“频率”、“全部”: df=df[df['Frequency']=='All'] 返回df 它给了我一个错误SyntaxError:无法分配给literal。请帮助您可以尝试.loc 样本数据: my_frame = pd.Dat

我想在不同的列上运行多个过滤器,如“频率”、“小数位数”和“受众”,如“全部”和“维度”=“活动”和KPI名称=“本田2018…”,这些都是从pandas中导入的excel表中获得的。我正在运行以下代码:

def filter_df(df,*args):
对于参数中的“频率”、“全部”:
df=df[df['Frequency']=='All']
返回df

它给了我一个错误
SyntaxError:无法分配给literal
。请帮助您可以尝试
.loc

样本数据:

my_frame = pd.DataFrame(data={'name' : ['alex5','martha1','collin4','cynthia9'],
                              'simulation1':[71,4.8,65,4.7],
                              'simulation2':[71,4.8,69,4.7],
                              'simulation3':[70,3.8,68,4.9],
                              'experiment':[70.3,3.5,65,4.4]})
my_frame
运行下面的代码将返回索引[1,2,3]:

my_frame.loc[(my_frame["simulation1"] == 4.8)]
然后,如果要使用
筛选更多列,下面的代码将返回索引[2,3]:

my_frame.loc[(my_frame["simulation1"] == 4.8) &  \
             (my_frame["simulation2"] == 69)
            ]

冲洗并重复,直到您满意为止。

我知道这是可能的

df = df[df['Frequency'] == 'All' and df['Something'] == 'Something else']

请随所需输出提供一些样本数据;这样就更容易提供帮助。您不能以这种方式在
for
-循环中使用字符串。您只能对['Frequency'、'All']
中的变量执行
可以手动编写所有过滤器,而无需对
循环执行
。@tamalika:请使用指南,特别是代码块,正确设置问题的格式,并提供预期的输入和输出,以便我们提供帮助。