使用Pandas读取分隔文件

时间:2015-03-26 12:51:04

标签: python pandas

我收到了一个不受限制的数据文件 - 数据如下所示:

$ head usa_00002.dat
20120500000001000000200010001000000200021111147870057729
20120500000001000000200010002000000160022101010000000000
20120500000001000000200010003000000130002010160000999999
20120500000001000000200010004000000200001010120000999999
20120500000002000000240010001000000240001111146870075959

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

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

1 个答案:

答案 0 :(得分:5)

您可以使用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)