pandas 根据字典中的值选择行

use*_*216 0 python pandas

我正在尝试根据可变数量的列和值从 pandas 数据框中选择行。对于固定的列和值,可以这样做:

df = pd.DataFrame([{'name' : 'ruben','age' : 25},{'name' : 'henk', 'age' : 26},{'name' : 'gijs', 'age' : 20}])

column_name = 'name'
column_value = 'ruben'

rows = df[df[column_name] == column_value]
Run Code Online (Sandbox Code Playgroud)

但是,我想对可变数量的列值对执行此操作,例如从列表中

df = pd.DataFrame([{'name' : 'ruben','age' : 25},{'name' : 'henk', 'age' : 26},{'name' : 'gijs', 'age' : 20}])

column_value_pairs = {'name' : 'ruben','age' : '25'}
rows = df[???]
Run Code Online (Sandbox Code Playgroud)

然后应该返回姓名为 ruben 且年龄为 25 的所有行。基本上是这样的:

rows = df[(df['name'] == 'ruben') & (df['age'] == 25)]
Run Code Online (Sandbox Code Playgroud)

而是使用字典中的列和值。

Tom*_*m S 5

只是迭代你的字典会起作用吗?

for key in column_value_pairs:
    df = df.loc[(df[key] == column_value_pairs[key])]
Run Code Online (Sandbox Code Playgroud)