我试图设置一个Python脚本,它能够读取许多固定宽度的数据文件,然后将它们转换为csv。要做到这一点,我使用pandas这样的:Python使用Pandas读取固定宽度的文件时没有任何数据类型解释
pandas.read_fwf('source.txt', colspecs=column_position_length).\
to_csv('output.csv', header=column_name, index=False, encoding='utf-8')
凡column_position_length
和column_name
是包含读取和写入数据所需的信息列表。
在这些文件中,我有很长的代表测试答案的数字字符串。例如:333133322122222223133313222222221222111133313333
代表多项选择测试的正确答案。所以这是一个比数值更多的代码。我遇到的问题是大熊猫将这些值解释为浮点数,然后用科学记数法将这些值写入csv(3.331333221222221e + 47)。
我发现了很多关于这个问题的问题,但他们没有完全解决我的问题。
- Solution 1 - 我相信在这一点上的价值已经转换为浮动,所以这没有帮助。
- Solution 2 - 根据大熊猫documentation,
dtype
不支持在Python中作为read_fwf
的参数。 - 解决方案3使用转换器 - 使用转换器的问题是您需要指定要转换为数据类型的列名称或索引,但是我想将所有列读作字符串。
第二个选项看起来像是以字符串的形式读取每一列的答案,但不幸的是它不支持read_fwf
。有什么建议么?
'dtype' _is_支持,是的,将其设置为'object'将是最佳解决方案。 – DyZ
dtype:列的类型名称或字典 - >类型,默认无 数据或列的数据类型。例如。 {'a':np.float64,'b':np.int32}(不支持engine ='python')。使用str或对象来保存并不解释dtype。 http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_fwf.html – dselgo