在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