如果在不同的笔记本电脑上运行,则Python ValueError

如果在不同的笔记本电脑上运行,则Python ValueError,python,pandas,merge,valueerror,Python,Pandas,Merge,Valueerror,我刚刚构建了一个在我的笔记本电脑上运行良好的功能(Mac,但我在office笔记本电脑的Windows虚拟机上工作),但当我将其传递给同事o'mine时,它会引发一个ValueError: “您正在尝试合并object和int64列。如果要继续,请使用pd.concat” 引发错误的代码行是一个简单的合并,在我的笔记本电脑上可以完美地工作: df=pd.merge(df1,df2,on=“x”,how=“outer”) 输入文件完全相同(直接取自同一远程文件夹)。 我完全不知道如何解决这个问题,

我刚刚构建了一个在我的笔记本电脑上运行良好的功能(Mac,但我在office笔记本电脑的Windows虚拟机上工作),但当我将其传递给同事o'mine时,它会引发一个ValueError:

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

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

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

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


感谢您的帮助!

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

df2['x'] = df2['x'].astype(str)
df1['x'] = df1['x'].astype(str)
df = pd.merge(df1, df2, on = "x", how = "outer)
由于pandas的版本不同,行为可能有所不同;或者,excel文件中可能存在细微差别,同事计算机上的excel文件中有一列以不同格式保存。

我猜(胡乱猜测)是来自两个选项卡分隔的CSV文件(即TSV文件)的数据在您和同事的计算机上使用不同的区域设置进行转换

df2['x'] = df2['x'].astype(str)
df1['x'] = df1['x'].astype(str)
df = pd.merge(df1, df2, on = "x", how = "outer)
检查是否存在与区域设置相关的操作,这些操作可能导致十进制分隔符为“错误”的数字无法识别为数字

这不应该发生在
pd.read_csv()
中,因为
decimal
参数具有定义良好的默认值


但根据我在另一个上下文中使用时间戳的经验,一个时间戳带有“坏”标记“格式可能导致整个列的类型错误。因此,如果您要合并的列中的两个文件中只有一个文件中的一个文件具有十进制分隔符,并且此十进制分隔符仅在您的计算机上被识别,则只有在您的计算机上,联接才会成功(我假设熊猫可以联接数字列,即使它们的类型不同)。

输入文件类型是什么?(Excel,CSV,…)另外:合并在来自两个不同输入文件的列上?输入是使用pd.read\u CSV(文件名,sep=“\t”)打开的txt文件。合并是在两个不同文件的列上进行的。请注意可接受的解决方案:转换为字符串可能会导致数字相等的值与字符串不同。例如,假设问题是由列的一个或多个值中的空格引起的,而该列在您的计算机上不是数字。假设较新版本的pandas忽略了空格。在计算机上,带空格的值可以等于不带空格的相同数值。一旦转换为字符串,值就会不同。更糟糕的是,这可能会被完全忽略,直到它造成损害。感谢您的帮助,没有小数,只有int,我们通过将所有内容转换为字符串来解决。事实上,我们检查了熊猫和我的版本是1.0.1,她的版本是0.23.1,这可能是原因吗?是的,尽管两个文件中“相同”列的数据类型不同的原因应该调查。我能想到的另一个可能的问题是整数的位数。还有一个是空格字符的存在(它们的处理方式可能会在不同版本之间发生变化)。