解析存储为文本的数字,逗号为十进制,点为千位

Posted

技术标签:

【中文标题】解析存储为文本的数字,逗号为十进制,点为千位【英文标题】:Parsing numbers stored as text with comma as decimal and dot as thousands 【发布时间】:2019-06-05 18:05:50 【问题描述】:

我有一个 Excel 文件要与 pandas 一起导入,其列存储为文本。需要注意的是,此文本是法语/拉丁语约定下的小数(基数)和千位数字,因此通过让 pandas 推断其类型,它会带来一个文本列,就像它在原始文件中呈现的那样:

           NUMBER
0   23.639.826,11
1       92.275,00
2    1.917.000,00
8        2.409,02
9       13.501,00
Name: NUMBER, dtype: object

如何让 pandas 将此文本转换为正确的浮点格式,而无需对 Excel 文件本身进行转换或应用字符串方法来替换逗号和点?

           NUMBER
0     23639826.11
1        92275.00
2      1917000.00
8         2409.02
9        13501.00

按照docs 的建议,我尝试在使用pd.read_excel 读取文件时使用thousands='.' 参数无济于事,并且使用pd.to_numeric 输出ValueError,因为它无法解析字符串。

【问题讨论】:

用替换检查 【参考方案1】:

试试df=pd.read_excel(filename, decimal=',', thousands='.')

【讨论】:

这个解决方案对我有用,但它必须是 decimalthousands。请问你是怎么知道十进制kwarg的? 我不知道您也可以在此方法中使用decimal 参数,因为官方文档没有列出它。很高兴知道这比我以前想象的要容易,谢谢!

以上是关于解析存储为文本的数字,逗号为十进制,点为千位的主要内容,如果未能解决你的问题,请参考以下文章

如何使用逗号将数字转换为千位分隔符? [复制]

表格会自行添加逗号

在Textview中显示千位分隔符和十进制格式的数字

用逗号格式化数字以在 Python 中分隔千位

十进制字符串与千位分隔符?

如何设置带两位小数的千位分隔符?