无法以字符串类型加入pandas数据框

时间:2018-10-20 06:07:12

标签: python pandas dataframe

我有两个DataFrames对象,其列如下所示

数据框1:

df.dtypes

输出:

ImageID       object
Source        object
LabelName     object
Confidence     int64
dtype: object

数据框2:

a.dtypes

输出:

LabelName       object
ReadableName    object
dtype: object

在这里,我正在尝试将这两个数据框合并如下

combined =  df.join(a,on='LabelName')

但是,我遇到了以下错误

  

ValueError:您正在尝试合并object和int64列。如果   您希望继续,应该使用pd.concat

但是,我将它们合并到LabelName上,LabelName仅具有字符串(对象数据类型)

我在这里想念什么吗?

3 个答案:

答案 0 :(得分:3)

关于on parameter,文档显示:

  

调用者中的列或索引级别名称要与其他索引一起连接,否则就按索引连接。

请注意,join()始终使用other.index。您可以尝试以下方法:

df.join(a.set_index('LabelName'), on='LabelName')

或者使用df.merge()

答案 1 :(得分:1)

有问题,某些列是DataFrame1中的整数以及字符串,而所有列都是DataFrame2中的字符串,这是导致问题的原因。

最简单的解决方案是将所有列都转换为字符串:

pd.merge(df1.astype(str),df2.astype(str), how='outer')

由于Value Error建议自己使用concat:

pd.concat([df1, df2])

答案 2 :(得分:0)

由于dtype不匹配,请尝试首先将Confidence列转换为对象。

 df['Confidence'].apply(str)