python - 发生异常:TypeError 'in' 需要字符串作为左操作数,而不是 Series
问题描述
我在 python 中使用 Pandas 我有 2 个数据框,我试图将信息从一个拉到另一个。这是代码的示例。
import pandas as pd
employees = {'Names': ['John','Jack','Frank','Mike'],
'Employee_id': ['123', '124', '125', '126'],
'Leader': ['','','','']}
df1 = pd.DataFrame(employees, columns = ['Names', 'Employee_id', 'Leader'])
print(df1)
leader = {'Employee_id': ['123', '124', '125', '126'],
'Supervisor': ['Nick', 'Jeff', 'Nick', 'Jeff']}
df2 = pd.DataFrame(leader, columns = ['Employee_id', 'Supervisor'])
print(df2)
df1['Leader'] = df1['Employee_id'].map(lambda x: df2['Supervisor'] if df2['Employee_id'] in x else "")
print(df1)
这是错误。
Exception has occurred: TypeError
'in <string>' requires string as left operand, not Series
不知道我做错了什么。
感谢您的帮助。
解决方案
在您的代码df2['Employee_id'] in x
中,x
是一个字符串,df2['Employee_id']
是一个熊猫系列。Python 不知道如何检查series in big_string
操作。更具体地说,它只能检查some_string in big_string
.
在您的情况下,您可以使用map
一系列:
df1['Leader'] = df1['Employee_id'].map(df2.set_index('Employee_id')['Supervisor'])
输出:
Names Employee_id Leader
0 John 123 Nick
1 Jack 124 Jeff
2 Frank 125 Nick
3 Mike 126 Jeff
推荐阅读
- mysql - SQL组合2个没有主键的表
- python - Python matplotlib直方图很慢
- java - MongoDB存储随机数据
- c++ - 如何允许通配符模板参数
- python - 我想用 django 在 htm 文件中导入 python 代码
- android - Android 将数据从 IntentService 发送到绑定的 Activity
- r - 尝试在 R 中实现套索时出现“参数 Y 缺失”?
- php - MySQL & Eloquent 查询
- apache - NiFi GenerateTableFetch 不存储每个 database.name 的状态
- sql-server - 将记录的数据库列中的数据分解为多条记录