python - 使用 Pandas 读取无分隔符的文件

标签 python pandas

我收到了一个不带分隔符的数据文件 - 数据如下所示:

$ head usa_00002.dat
20120500000001000000200010001000000200021111147870057729
20120500000001000000200010002000000160022101010000000000
20120500000001000000200010003000000130002010160000999999
20120500000001000000200010004000000200001010120000999999
20120500000002000000240010001000000240001111146870075959

我有一个代码本文件,它解释了数据的实际设置方式(YEAR 列 1–4、DATANUM 列 5–6 等)

将这些数据导入 Pandas 的最佳方式是什么?有没有一种标准方法可以使用 read_table 或类似的函数来直接读取此文件?我是否应该编写一个脚本在所有分栏符所在的位置插入逗号,然后将其作为 CSV 读取? (我只想做后者,但我也有兴趣更好地使用 Pandas,所以如果有一种开箱即用的方法,我想知道它。)

最佳答案

您可以使用pandas.io.parsers.read_fwf()功能:

from cStringIO import StringIO

s = """20120500000001000000200010001000000200021111147870057729
       20120500000001000000200010002000000160022101010000000000
       20120500000001000000200010003000000130002010160000999999
       20120500000001000000200010004000000200001010120000999999
       20120500000002000000240010001000000240001111146870075959"""

colspecs = [(0, 4), (5, 6), ...]
df = pd.read_fwf(StringIO(s), colspecs=colspecs, header=None)

关于python - 使用 Pandas 读取无分隔符的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29278903/

相关文章:

python - 使用 Python 查找 {{ }} 中 JavaScript 填充的信息

python - 使用 Python 确定图像是否存在于更大的图像中,如果存在,则找到它

python - Pandas - 创建一个包含前一列聚合的新列

python - 加速 Pandas 应用于一批组

python - 如何根据数据框另一列中的条件在列中找到最小值?

python - 如何在 Windows 10 中使用 Selenium 和 Python 通过 Whatsapp Web 发送 pdf 文件

python - 根据使用 Pandas 保留其他列值的列对 DataFrame 中的日期进行排序

python - 使用具有多种数据类型的索引列表对 Pandas 系列对象进行切片

python - django 中 select_related() 和 select_related ('columnname' ) 之间的区别

python - 有没有办法从 FastF1 每行显示更多列(参见代码)