我试图建立一个Python脚本,它将能够读取许多固定宽度的数据文件,然后将它们转换为csv。要做到这一点,我使用的熊猫是这样的:
pandas.read_fwf('source.txt', colspecs=column_position_length).\
to_csv('output.csv', header=column_name, index=False, encoding='utf-8')
其中column\u position\u length
和column\u name
是包含读写数据所需信息的列表。
在这些文件中,我有代表测试答案的长串数字。例如:3331333221222231333132222221111333133333
代表多项选择题测试的正确答案。所以这更多的是一个代码而不是一个数值。我遇到的问题是,熊猫将这些值解释为浮点数,然后用科学记数法将这些值写入csv(3.333332212212E 47)。
我发现了很多关于这个问题的问题,但它们并没有完全解决我的问题。
dtype
在Python中不支持作为
read_fwf
的参数。
第二个选项似乎是将中的每一列作为字符串读取的首选选项,但不幸的是,read\u fwf
不支持它。有什么建议吗?
所以我想我找到了一个解决方案,但我不知道它为什么有效。熊猫将这些值解释为浮点数,因为列中有NaN值(空行)。通过将keep_default_na=False
添加到read_fwf()
参数,它解决了这个问题。根据留档:
keep_default_na: bool,默认True如果指定了na_values,keep_default_na为False,默认NaN值将被重写,否则将被附加到。
我想我不太明白这是如何解决我的问题。有人能澄清一下吗?
问题内容: 我正在使用该功能将Excel文件导入到熊猫数据框。 列之一是表的主键:它是所有数字,但是存储为文本(Excel单元格左上角的绿色小三角形确认了这一点)。 但是,当我将文件导入pandas数据框时,该列将以浮点形式导入。这意味着,例如“ 0614”变为614。 导入列时是否可以指定数据类型?我知道在导入CSV文件时这是可能的,但找不到的语法。 我能想到的唯一解决方案是在Excel中的文本
问题内容: 我知道熊猫有,但是有类似的东西吗?我正在寻找对字段宽度,数值精度和字符串对齐的支持。似乎没有做到这一点。 可以,但是我不想做: 那似乎是错误的。非常感谢您的想法。 问题答案: 除非有人在熊猫中实现此功能,否则您可以使用制表包:
对于像这样的固定宽度整数类型,是否有一些整数文字的c建议?
问题内容: 如何使用Pandas读取以下(两列)数据(来自.dat文件) 列分隔符(至少)为2个空格。 我试过了 但它打印 问题答案: 您可以将参数usecols与列顺序一起使用: 编辑: 您可以使用分隔符-2个或更多空格,然后添加,因为出现警告: ParserWarning:回退到“ python”引擎,因为“ c”引擎不支持正则表达式分隔符(分隔符> 1个字符且与“ \ s +”不同的分隔符被
问题内容: 我试图找到一种解析文件的方法,该文件包含固定宽度的线。例如,前20个字符代表一列,从21:30开始代表另一列,依此类推。 假设该行包含100个字符,将行解析为多个组件的有效方法是什么? 我可以每行使用字符串切片,但是如果行很大,这会有点难看。还有其他快速方法吗? 问题答案: 由于Python标准库的模块是用C编写的,因此使用它非常容易而且非常快捷。 这是可以用来完成您想要的事情的方法。
问题内容: 我从供应商那里得到了一个文件,每行有115个固定宽度的字段。如何将文件解析为115个字段,以便可以在代码中使用它们? 我首先想到的是只是为了让常数为每场像和使用。这看起来很丑,所以我很好奇这样做的更好方法。谷歌搜索打开的两个图书馆似乎都没有更好的选择。 问题答案: 我将使用像flatworm这样的平面文件解析器,而不是重新发明轮子:它具有简洁的API,易于使用,具有不错的错误处理能力和