我收到了一个无界数据文件,数据看起来像这样:
$ head usa_00002.dat
20120500000001000000200010001000000200021111147870057729
20120500000001000000200010002000000160022101010000000000
20120500000001000000200010003000000130002010160000999999
20120500000001000000200010004000000200001010120000999999
20120500000002000000240010001000000240001111146870075959
我有一个密码本文件,解释了如何实际设置数据(YEAR columns 1–4, DATANUM columns 5–6
等)
对我来说,将这些数据导入Pandas的最佳方法是什么?我可以使用read_table
或类似功能直接读取此文件的标准方法吗?我是否应该编写脚本以在所有分行符所在的位置插入逗号,然后以CSV格式读取? (我只是愿意做后者,但我也想与Pandas一起变得更好,所以如果有一种我想知道的开箱即用的方式。)
python大神给出的解决方案
您可以为此使用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)