DataFrame列类型不会切换为字符串

时间:2018-10-18 18:16:37

标签: python-3.x pandas

使用以下命令合并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”。

我相信这是消息背后的根本原因,但是这些方法显然都没有成功地将类型切换为字符串。

我误会了或者错过了一步...

1 个答案:

答案 0 :(得分:1)

pandas将字符串存储在object字段中,所以这不是问题。问题在于,在合并中,您要指定left_on='Vendor', right_index=True,这意味着合并尝试将df['Vendor']LFA1.index(可能只是行自动编号)进行匹配。

您想要的是left_on='Vendor', right_on='Vendor'或较短的on='Vendor',因为看起来两个字段的字段名称相同。