Python中拼接字符串与float类型数据报错的解决方法咨询
解决办法
直接给你几个可行的方案:
提前把所有单元格转为字符串并替换NaN
遍历前先处理整个DataFrame,把所有列转成字符串类型,同时把NaN替换为空字符串,后续拼接就不会有类型问题:# 先处理DataFrame,将NaN转为空字符串,所有单元格转为str类型 df = df.astype(str).replace('nan', '', regex=False) # 再执行你的遍历拼接逻辑 descrVar = "" for each in x: descrVar = descrVar + " " + df.iloc[counter, each]遍历拼接时单独处理每个单元格
不想修改原DataFrame的话,在拼接前把每个单元格转成字符串,同时判断如果是NaN就替换为空:descrVar = "" for each in x: cell_val = df.iloc[counter, each] # 处理NaN,转成空字符串,其他值转为str str_val = str(cell_val) if not pd.isna(cell_val) else "" descrVar = descrVar + " " + str_val用pandas内置方法更高效
如果是取某一行的指定列拼接,直接用str.cat方法,比循环更简洁高效:# 取counter行、x对应的列,空格分隔拼接,自动处理NaN descrVar = df.iloc[counter, x].astype(str).str.cat(sep=" ").replace('nan', '')
你的推测没错,NaN在pandas里默认是numpy.float64类型,和字符串拼接会触发类型错误,上面的方法都能解决这个问题。
内容的提问来源于stack exchange,提问作者OutThere
相关产品推荐
相关产品推荐

