Python ValueError,如果在其他笔记本电脑上运行

问题描述 投票:1回答:2

我刚刚构建了可以在笔记本电脑上正常工作的功能(Mac,但是我正在使用办公室笔记本电脑的Windows虚拟机),但是当我将其传递给同事o'mine时,它会产生一个ValueError:

“”您正在尝试合并object和int64列。如果要继续,则应使用pd.concat“

引发错误的代码行是一个简单的合并,在我的笔记本电脑上可以很好地工作:

df = pd.merge(df1,df2,on =“ x”,how =“外部)

输入文件完全相同(直接从相同的远程文件夹中获取)。我完全不知道如何解决该问题,而且我也不明白为什么在我的笔记本电脑上它可以工作(即使我打开一个新脚本或重新启动内核,所以周围也没有存储的变量),并且在我的一个同事没有。

感谢您的帮助!

python pandas merge valueerror
2个回答
0
投票

其中一列是对象数据类型,另一列是整数。它们必须具有相同的格式才能合并。尝试添加两行以更改同事计算机上的数据类型。

df2['x'] = df2['x'].astype(str)
df1['x'] = df1['x'].astype(str)
df = pd.merge(df1, df2, on = "x", how = "outer)

由于熊猫的版本不同,行为可能有所不同;或者,可能在excel文件中有些细微差别,其中同事计算机上的excel文件具有以不同格式保存的列之一。


0
投票

我的猜测(一个大胆的猜测)是,以2个制表符分隔的CSV文件(即TSV文件)中的数据是以某种方式在您的计算机和同事的计算机上使用不同的语言环境进行转换的。

[检查是否有与语言环境相关的操作,这些操作可能导致数字不正确的十进制分隔符不被识别为数字。

pd.read_csv()中不应发生此情况,因为decimal参数具有明确定义的默认值"."

但是从我在另一种上下文中使用时间戳的经验来看,具有“错误”格式的时间戳会导致整个列的类型错误。因此,如果您要合并的列中的两个文件之一只有一个具有小数点分隔符,并且此小数点分隔符仅在您的计算机上被识别,那么只有在您的计算机上,连接才会成功( m假设熊猫可以连接数字列,即使它们的类型不同。]

© www.soinside.com 2019 - 2024. All rights reserved.