我收到了一个不受限制的数据文件 - 数据如下所示:
$ head usa_00002.dat
20120500000001000000200010001000000200021111147870057729
20120500000001000000200010002000000160022101010000000000
20120500000001000000200010003000000130002010160000999999
20120500000001000000200010004000000200001010120000999999
20120500000002000000240010001000000240001111146870075959
我有一个代码簿文件,解释了数据的实际设置方式(YEAR columns 1–4, DATANUM columns 5–6
等)
将这些数据输入Pandas的最佳方法是什么?有没有一种标准的方法可以使用read_table
或类似的函数来直接读取这个文件?我应该编写一个脚本来插入所有列分隔符的逗号,然后将其作为CSV读取吗? (我只是做后者,但我也有兴趣与熊猫变得更好,所以如果有一种开箱即用的方式我想知道它。)
答案 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)