我正在尝试设置一个Python脚本,该脚本将能够在许多固定宽度数据文件中读取,然后将其转换为CSV。为此,我正在使用这样的熊猫:
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.331333322222221E 47(。
我发现了很多有关此问题的问题,但它们并没有完全解决我的问题。
- 解决方案1-我相信这一点上的值已经转换为浮子,所以这无济于事。
- 解决方案2-根据PANDAS文档,
dtype
不支持Python中read_fwf
的参数。 - 解决方案3使用转换器 - 使用转换器的问题是您需要指定列名称或索引以转换为数据类型,但是我想将所有列读为字符串。
第二个选项似乎是回答作为字符串的每一列的回答,但不幸的是,read_fwf
不支持它。有任何建议吗?
,所以我想我找到了一个解决方案,但是我不知道它为什么有效。熊猫将这些值解释为浮子,因为列中有NAN值(空白线(。通过将keep_default_na=False
添加到read_fwf()
参数中,它解决了此问题。根据文档:
keep_default_na :bool,如果指定了na_values,则默认为true,并且 keep_default_na是错误的默认NAN值被覆盖, 否则它们会附加到。
我想我不太了解这是如何解决我的问题的。谁能对此添加任何清晰度?