Python读取固定宽度文件,而无需使用PANDAS解释任何数据类型



我正在尝试设置一个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_lengthcolumn_name是包含读取和写入数据所需的信息的列表。

在这些文件中,我有长长的数字字符串代表测试答案。例如:333133322122222223133313222222221222111133313333表示多项选择测试中的正确答案。因此,这比数字值更像是代码。我遇到的问题是大熊猫将这些值解释为浮子,然后用科学符号将这些值写入CSV(3.331333322222221E 47(。

我发现了很多有关此问题的问题,但它们并没有完全解决我的问题。

  1. 解决方案1-我相信这一点上的值已经转换为浮子,所以这无济于事。
  2. 解决方案2-根据PANDAS文档,dtype不支持Python中read_fwf的参数。
  3. 解决方案3使用转换器 - 使用转换器的问题是您需要指定列名称或索引以转换为数据类型,但是我想将所有列读为字符串。

第二个选项似乎是回答作为字符串的每一列的回答,但不幸的是,read_fwf不支持它。有任何建议吗?

,所以我想我找到了一个解决方案,但是我不知道它为什么有效。熊猫将这些值解释为浮子,因为列中有NAN值(空白线(。通过将keep_default_na=False添加到read_fwf()参数中,它解决了此问题。根据文档:

keep_default_na :bool,如果指定了na_values,则默认为true,并且 keep_default_na是错误的默认NAN值被覆盖, 否则它们会附加到。

我想我不太了解这是如何解决我的问题的。谁能对此添加任何清晰度?

相关内容

  • 没有找到相关文章

最新更新