所以,我有这样的数据框,从 csv 文件导入
名称 | 数学 | 物理 |
---|---|---|
詹姆斯 | 80 | 90 |
汤姆 | 60 | 70 |
杰瑞 | 90 | 60 |
我有一本字典
data = {'math': 60, 'physic': 70}
我想检查数据字典的每个值并将其与数据框进行比较。如果数学和物理的匹配值应该返回名称。在本例中为 Tom
。
我该怎么做?有什么建议吗?
答案 0 :(得分:3)
您可以将 boolean indexing
与 loc
一起使用:
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']