如何处理此错误:ValueError: can only conversion an array of size 1 to a Python scalar

问题描述 投票:0回答:1

我有2个excel文件,第一个文件在名为name的列中包含姓名,在名为workhour的列中包含该姓名的工作时间,我想从第一个excel中读取姓名,然后读取该人的工资从第二个开始,两个Excel中的名字顺序不同,并且在第一个Excel中,人名多次出现,所以我定义了一个函数,如下代码: 但我收到这个错误 我该如何解决这个问题 让我有点困惑的是,为什么当我在循环外使用这个函数时,这个函数对每个名称都可以正确工作,但是当涉及到循环时会出现错误

import pandas as pd

df=pd.read_excel('first excel')

def find_age(file_path,name):
    dataframe = pd.read_excel('file_path_second',name)
    row= dataframe[dataframe['name'] == name].index.item()
    age=dataframe.at[row,'age']
    return(age)

for i in range(0,len(df)):
    names=df.at[i,'name']
    agee=find_age('file_path_second',names)
python pandas excel numpy openpyxl
1个回答
0
投票

您可以测试是否存在匹配,然后通过索引选择第一个匹配的值,如果不匹配则返回

None
:

def find_age(file_path,name):
    dataframe = pd.read_excel('file_path_second',name)
    
    m = dataframe['name'] == name
    if m.any():
        row= dataframe[m].index[0]
        age=dataframe.at[row,'age']
        return(age)
    else:
        return None

您可以在

apply
中使用循环来调用函数:

agee = df['name'].apply(lambda x: find_age('file_path_second',x))
© www.soinside.com 2019 - 2024. All rights reserved.