python - 无法在 pandas.read_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
对象作为对象读入熊猫,然后我需要替换,
为.
,最后我可以将字符串更改为浮动。
然而
这种方法很乏味。我怎样才能更有效地解决这个问题?
解决方案
不幸的是,没有办法告诉 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} )
推荐阅读
- database - 我的 H2/C3PO/Hibernate 设置似乎没有保留准备好的语句?
- ios - 基本视图占用过多 CPU
- html - 拖动时退出禁止光标
- netsuite - ReferenceError - 未定义上下文 (Netsuite)
- java - Gradle.properties 未传递到我的 Java 应用程序
- windows - 为什么 signtool.exe 以管理员身份运行时只能找到证书?
- mysql - 全新安装后无法设置mysql root密码
- android - 辅助功能服务:获取可以即时交互的视图(与语音访问相同)?
- angular - 如何使 Angular 8 与 IE11 兼容?
- vb.net - 安装时的奇怪问题