我有两个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仅具有字符串(对象数据类型)
我在这里想念什么吗?
答案 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)