Python 如何比较字典值和数据帧?

Python 如何比较字典值和数据帧?,python,pandas,dictionary,Python,Pandas,Dictionary,所以,我有这样的数据帧,从csv文件导入 名称 数学 物理的 詹姆斯 80 90 汤姆 60 70 杰瑞 90 60 通常情况下,pandas和numpy的运营效率不高,但这可以: df[(df['math'] == mydict['math'] )& (df['physic'] == mydict['physic'] )]['name'][0] 'Tom' 返回数据和数据帧的交集: df_str='' 命名为数学物理 詹姆斯80 90 汤姆60 70 杰瑞9060 ''' df=pd

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

名称 数学 物理的 詹姆斯 80 90 汤姆 60 70 杰瑞 90 60
通常情况下,pandas和numpy的运营效率不高,但这可以:

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

返回数据和数据帧的交集:

df_str=''
命名为数学物理
詹姆斯80 90
汤姆60 70
杰瑞9060
'''
df=pd.read\u csv(io.StringIO(df\u str.strip()),sep='\s+',index\u col=False)
数据={'math':60,'physic':70}
def查询名称(数据):
df2=pd.系列(数据).to_frame().T
dfn=pd.merge(df,df2,on=['math','physic'],how='inner')
返回dfn
数据={'math':90,'physic':60}
查询名称(数据)

您可以将
布尔索引
loc
一起使用:

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


“没有要执行合并的公共列。”pandas.errors.MergeError:没有要执行合并的公共列。合并选项:left_on=None,right_on=None,left_index=False,right_index=False将
数据
键置于
df.列中
。使用df定义更新。它将转到键错误文件“/usr/local/lib/python3.7/site packages/pandas/core/restrape/merge.py”,第87行,在merge validate=validate中,文件“/usr/local/lib/python3.7/site packages/pandas/core/restrape/merge.py”,第652行,在init=self.\u get\u merge\u keys()文件中“/usr/local/lib/python3.7/site packages/pandas/core/reforme/merge.py”,第1018行,在“获取/合并”键左键中。追加(左。获取/标签或级别值(lk))文件“/usr/local/lib/python3.7/site packages/pandabs/core/generic.py”,第1563行,在“获取/标签或级别值提升键错误(键)”它返回无效的语法为什么?这个语法中的什么是无效的?我很好奇…它是有效的!但是,如果我只想返回'Tom',怎么办?检查
tolist
df.loc[df[data].eq(data.values()).all(1),'name'].tolist()
df.loc[df[data].eq(data.values()).all(1), 'name']
1    Tom
Name: name, dtype: object