在python中如何从字典中的多个数据帧中筛选出行

在python中如何从字典中的多个数据帧中筛选出行,python,python-3.x,pandas,dictionary,Python,Python 3.x,Pandas,Dictionary,我有一个字典,其中包含许多数据帧 样本数据: dataframe1 = pd.DataFrame({"variable1":["a","a","b"]}) dataframe2 = pd.DataFrame({"variable1":["b","a","b"]}) dictionary = dict(zip(["dataframe1","dataframe2"],[dataframe1,dataframe2])) 我想做的是创建一个新的字典,它将包含数据帧s,但它将排除variable1==“

我有一个
字典
,其中包含许多
数据帧

样本数据:

dataframe1 = pd.DataFrame({"variable1":["a","a","b"]})
dataframe2 = pd.DataFrame({"variable1":["b","a","b"]})
dictionary = dict(zip(["dataframe1","dataframe2"],[dataframe1,dataframe2]))
我想做的是创建一个新的
字典
,它将包含
数据帧
s,但它将排除
variable1==“a”

列表
等效的
R
命令为

dictionary_new <- lapply(dictionary ,function(x){x[!variable1=="a",]})

dictionary\u new将听写理解与或一起使用。对于排除
a
需要过滤所有非
a
的值

dictionary = {k:v.query('variable1!="a"') for k, v  in dictionary.items()}
或:

您还可以使用:

dictionary = {k:v.loc[v.variable1!="a",:] for k, v  in dictionary.items()}
看来@jezrael第二个建议是最快的:

In [94]: timeit {k:v.query('variable1!="a"') for k, v  in dictionary.items()}
100 loops, best of 3: 1.83 ms per loop

In [95]: timeit {k:v[v.variable1!="a"] for k, v  in dictionary.items()}
1000 loops, best of 3: 533 µs per loop

In [96]: timeit {k:v.loc[v.variable1!="a",:] for k, v  in dictionary.items()}
1000 loops, best of 3: 593 µs per loop

工作起来很有魅力。非常感谢。关于我的信息,您如何扩展它以添加多个条件?例如,
variable2=“b”
?当然可以,使用
v[(v.variable1!=“a”)和(variable2!=“b”)]
v.query('variable1!=“a”&variable2!=“b”)
@Bharathshetty对我来说很有效。我正在使用
python3.x
In [94]: timeit {k:v.query('variable1!="a"') for k, v  in dictionary.items()}
100 loops, best of 3: 1.83 ms per loop

In [95]: timeit {k:v[v.variable1!="a"] for k, v  in dictionary.items()}
1000 loops, best of 3: 533 µs per loop

In [96]: timeit {k:v.loc[v.variable1!="a",:] for k, v  in dictionary.items()}
1000 loops, best of 3: 593 µs per loop