使用以下命令合并2个DataFrame时:
df = pd.merge(df,LFA1, left_on='Vendor', right_index=True, how='left')
...,并得到臭名昭著的消息:“您正在尝试合并object和int64列。”。看来,最可能的原因是左右键类型是'int'。
我发现了两种将键类型强制为str的方法: 一种。创建DataFrame时:
LFA1= pd.read_excel(r'G:\FAIA 2018\Extracts\LFA1(Full).xlsx',converters={'Vendor':str})
b。在创建DataFrame之后:
LFA1['Vendor']=LFA1['Vendor'].astype(str)
即使我在命令后立即询问类型:
df.types()
LFA1.types()
“供应商”列保留为“对象”,但从不显示“ str”。
我相信这是消息背后的根本原因,但是这些方法显然都没有成功地将类型切换为字符串。
我误会了或者错过了一步...
答案 0 :(得分:1)
pandas
将字符串存储在object
字段中,所以这不是问题。问题在于,在合并中,您要指定left_on='Vendor', right_index=True
,这意味着合并尝试将df['Vendor']
与LFA1.index
(可能只是行自动编号)进行匹配。
您想要的是left_on='Vendor', right_on='Vendor'
或较短的on='Vendor'
,因为看起来两个字段的字段名称相同。