如何比较字典值和熊猫数据框?

时间:2020-12-30 08:40:30

标签: python pandas dictionary

所以,我有这样的数据框,从 csv 文件导入

<头>
名称 数学 物理
詹姆斯 80 90
汤姆 60 70
杰瑞 90 60

我有一本字典

data = {'math': 60, 'physic': 70}

我想检查数据字典的每个值并将其与数据框进行比较。如果数学和物理的匹配值应该返回名称。在本例中为 Tom

我该怎么做?有什么建议吗?

3 个答案:

答案 0 :(得分:3)

您可以将 boolean indexingloc 一起使用:

df.loc[df[data].eq(data.values()).all(1), 'name']

1    Tom
Name: name, dtype: object

答案 1 :(得分:0)

通常 find 操作在 pandas 和 numpy 中效率不高,但这样做可以:

df[(df['math'] == mydict['math'] )& (df['physic'] == mydict['physic'] )]['name'][0]
'Tom'

答案 2 :(得分:0)

返回数据和DataFrame的交集:

df_str = '''
name    math    physic
James   80  90
Tom 60  70
Jerry   90  60
'''
df = pd.read_csv(io.StringIO(df_str.strip()), sep='\s+', index_col=False)

data = {'math': 60, 'physic': 70}
def query_name(data):
    df2 = pd.Series(data).to_frame().T
    dfn = pd.merge(df, df2, on=['math', 'physic'], how='inner')
    return dfn

data = {'math': 90, 'physic': 60}
query_name(data)
['Jerry']
相关问题