1

我正在使用以下代码,但它的转换超出了预期

writer = pd.ExcelWriter(path_out+file_name_out,engine='xlsxwriter',options={'strings_to_numbers': True})
df.to_excel(writer, sheet_name='blabla', index=False)

例如,值57_345更改为57345,删除“_”。可以在数字上正常工作,并且可以使用 alpha,但只是对该用例有问题。以前有人遇到过这个问题吗?谢谢。

4

1 回答 1

0

Python在 Python 3.6中添加了对数字文字中的下划线的支持。所以现在你可以把 1234567 写成 1_234_567,这样数字就更清楚了。

这样做的结果是像“57_345”这样的字符串将被转换为一个数字,使用float()

$ python
Python 3.6.6 (default, Aug 16 2018, 00:18:32)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.42.1)] on darwin

>>> float("57_345")
57345.0

这是 XlsxWriterstrings_to_numbers在启用选项时使用的转换,因此“57_345”被转换为数字。

如果您想避免这种情况和其他误报,您应该关闭(或忽略)此选项。如果您需要将字符串数据转换为可能被误解的数字,您应该在 Pandas 或 Python 中单独处理。

于 2020-08-02T23:19:37.703 回答