我目前有一个包含以下列的数据框:[公司,名字,姓氏,性别,年龄]
我正在尝试编写一个以公司,性别和年龄为参数的程序,检查是否所有3个数据框都存在于数据框中,然后输出数据框同一行中存在的first_name和last_name值作为列表。
def employee_matcher(company, age, gender):
if df_employee.loc[(lambda df_employee: df_employee['company'] == company)] == True:
if df_employee.loc[(lambda df_employee: df_employee['age'] == age)] == True:
if df_employee.loc[lambda df_employee: (df_employee['gender'] == gender)] == True:
first_name = df_employee.loc['first_name']
last_name = df_employee.loc['last_name']
return list(first_name, last_name)
例如,如果数据框包含以下信息
['verizon', 'James' 'Wall' 'Male' 31]
输入 employee_matcher('verizon', 31, 'Male')
会回来
(['James'], ['Wall'])
我继续收到有关数据框真值的错误,并且不知道如何进行。
对不起,但我无法真正用更好的术语来解释它,但是您可以像这样通过布尔掩码从pandas数据框中获取一行。您需要使用按位运算(请注意&
),否则pandas会引发含糊的真实值错误
employee_data.loc[(employee_data.company == company) & (employee_data.gender == gender) & (employee_data.age == age)]
这是我想出的解决方案
def employee_matcher(company, age, gender):
data = employee_data.loc[(employee_data.company == company) & (employee_data.gender == gender) & (employee_data.age == age)]
return [data.first_name.to_list(), data.last_name.to_list()]
希望这可以帮助
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句