首页 > 解决方案 > 无法在 pandas.read_excel 中将字符串转换为数字

问题描述

问题

我有一个德语格式的 excel 文件。看起来像这样 在此处输入图像描述

我想使用流动代码将第一列作为数字读入熊猫:

import pandas as pd
import numpy as np
tmp = pd.read_excel("test.xlsx", dtype = {"col1": np.float64})

它给了我错误

ValueError: Unable to convert column col1 to type <class 'numpy.float64'>

问题出在excel中。如果我将手动修改col1为数字格式,它可以解决问题。查看这个新的 excel 文件: 在此处输入图像描述

方法

我可以先将col1对象作为对象读入熊猫,然后我需要替换,.,最后我可以将字符串更改为浮动。

然而

这种方法很乏味。我怎样才能更有效地解决这个问题?

标签: pythonpandas

解决方案


不幸的是,没有办法告诉 pandas 正在使用什么小数分隔符。

您可以做的是创建一个函数来进行转换并将其作为转换器参数的一部分传递给 read_excel。

def fix_decimal(num):
### convert numeric value with comma as decimal separator to float
  print(num)
  return float(num.replace(',', '.')) if num else 0
  
tmp = pd.read_excel("test.xlsx", converters={0: fix_decimal} )

推荐阅读