我正在使用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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句