Python 基于不同列列表从数据帧中选择行的有效方法

Python 基于不同列列表从数据帧中选择行的有效方法,python,pandas,dataframe,Python,Pandas,Dataframe,假设我们有以下数据帧: dt = {'A': ['a','a','a','a','a','a','b','b','c'], 'B': ['x','x','x','y','y','z','x','z','y'], 'C': [10, 14, 15, 11, 10, 14, 14, 11, 10], 'D': [1, 3, 2, 1, 3, 5, 1, 4, 2]} df = pd.DataFrame(data=dt) 我想根据字典提取某些行,其中键是列名,值是

假设我们有以下数据帧:

dt = {'A': ['a','a','a','a','a','a','b','b','c'],
      'B': ['x','x','x','y','y','z','x','z','y'],
      'C': [10, 14, 15, 11, 10, 14, 14, 11, 10],
      'D': [1, 3, 2, 1, 3, 5, 1, 4, 2]}
df = pd.DataFrame(data=dt)
我想根据字典提取某些行,其中键是列名,值是行值。例如:

d = {'A': 'a', 'B': 'x'}
d = {'A': 'a', 'B': 'y', 'C': 10}
d = {'A': 'b', 'B': 'z', 'C': 11, 'D': 4}
可以使用循环完成(考虑最后一个字典):


由于数据帧预计将非常大,并且可能有许多列可供选择,因此我正在寻找一种有效的方法来解决此问题,而无需使用for循环来迭代数据帧。

使用下面的命令,使dict成为
系列

print(df[(df[list(d)] == pd.Series(d)).all(axis=1)])
输出:

   A  B   C  D
7  b  z  11  4
   A  B   C  D
7  b  z  11  4