Python 使用字典筛选数据帧

Python 使用字典筛选数据帧,python,pandas,Python,Pandas,有没有一种方法可以结合使用列名和值字典来过滤数据帧 数据帧示例: df = pd.DataFrame({     "name": ["Ann", "Jana", "Yi", "Robin", "Amal", "Nori"],     "city": ["Chicago", "Prague", &qu

有没有一种方法可以结合使用列名和值字典来过滤数据帧

数据帧示例:

df = pd.DataFrame({
    "name": ["Ann", "Jana", "Yi", "Robin", "Amal", "Nori"],
    "city": ["Chicago", "Prague", "Shanghai", "Manchester", "Chicago", "Osaka"],
    "age": [28, 33, 34, 38, 31, 37],
    "score": [79.0, 81.0, 80.0, 68.0, 61.0, 84.0],
})

column_dict = {0:"city", 1:"score"}
value_dict = {0:"Chicago", 1:61}
目标是使用匹配键列和值字典来过滤数据帧。 在本例中,城市将被过滤到芝加哥,分数将被过滤到61,过滤后的数据框为:

    name    city    age score
4   Amal    Chicago 31  61.0

使用两个不同的dict来存储键和值有点滑稽。你最好做这样的事情:

filter_dict = {"city":"Chicago", "score":61}

df_filt = df
    for k,v in filter_dict.items():
        df_filt = df_filt[df_filt[k] == v]
输出:

   name     city  age  score
4  Amal  Chicago   31   61.0
使用:

输出

df[df[column_dict.values]==value_dict.values.allaxis=1]
   name     city  age  score
4  Amal  Chicago   31   61.0
# create filter DataFrame from column_dict and value_dict
df_filter = pd.DataFrame({value: [value_dict[key]] for key, value in column_dict.items()})

# use merge with df_filter
res = df.merge(df_filter, on=['city', 'score'])

print(res)
   name     city  age  score
0  Amal  Chicago   31   61.0