Python脚本在bat文件中运行时不会运行,而是在编辑器上无缝运行。
该错误与pd.merge脚本中的数据类型差异有关。尽管在两个数据帧中赋予这两列的数据类型是相同的。
df2a["supply"] = df2a["supply"].astype(str)
df2["supply_typ"] = df2["supply_typ"].astype(str)
df2a["supply_typ"] = df2a["supply_typ"].astype(str)
df = (pd.merge(df2,df2a, how=join,on=
['entity_id','pare','grome','buame','tame','prd','gsn',
'supply','supply_typ'],suffixes=['gs2','gs2x']))
运行bat文件时,我在pd.merge中遇到以下错误:
您正在尝试在float64和对象列上合并。如果要继续,则应使用pd.concat
答案 0 :(得分:0)
不是直接答案,但包含的代码无法在注释中格式化,并且应该足以解决问题。
当熊猫说您正在尝试在float64和对象列上合并时,这肯定是正确的。这可能不是很明显,因为熊猫依赖numpy,而numpy的 object 列可以存储任何数据。
我以一个简单的功能来诊断所有这些数据类型问题:
def show_types(df):
for i,c in enumerate(df.columns):
print(df[c].dtype, type(df.iat[0, i]))
它既显示数据框的列的pandas数据类型,又显示列的第一个元素的实际类型。它可以帮助您查看包含str
元素的列与包含datatime.datatime
元素的列之间的区别,而数据类型仅为objects
。
在两个数据框上都使用它,问题应该变得很明显...