【发布时间】:2015-05-04 11:28:47
【问题描述】:
我想将一些数据加载到 python pandas 中,以便尽可能简单地进行操作。数据采用以下我无法控制的格式:
# file generated on Sun Feb 8 23:42:56 2015
# structure, X2, Rg, filename
1 1.100341 83.720000 run2/crysol//run2_00001 0.840187
2 1.048154 83.730000 run2/crysol//run2_00002 0.788968
3 1.056927 83.730000 run2/crysol//run2_00003 0.793954
4 1.481612 84.040000 run2/crysol//run2_00004 0.786256
我找到了一种使用 read_table 读取数据的方法,但只能通过打开文本文件并使用以下命令单独读取行来提取列名:
In [1]: data = pd.read_table('data.txt', sep='\t', skiprows=2, header=None)
Out[1]:
0 1 2 3 4
0 1 1.100341 83.72 run2/crysol//run2_00001 0.840187
1 2 1.048154 83.73 run2/crysol//run2_00002 0.788968
2 3 1.056927 83.73 run2/crysol//run2_00003 0.793954
3 4 1.481612 84.04 run2/crysol//run2_00004 0.786256
In [2]: header = open('data.txt', 'r').readlines()[1].lstrip('#').strip().split(', ')
In [3]: header.append('unknown')
In [4]: data.columns = header
In [5]: print data
structure X2 Rg filename unknown
0 1 1.100341 83.72 run2/crysol//run2_00001 0.840187
1 2 1.048154 83.73 run2/crysol//run2_00002 0.788968
2 3 1.056927 83.73 run2/crysol//run2_00003 0.793954
3 4 1.481612 84.04 run2/crysol//run2_00004 0.786256
4 5 1.634436 84.03 run2/crysol//run2_00005 0.935468
它意识到列名是逗号分隔而数据是制表符分隔的事情变得复杂。此外,我不确定为什么其中一个列标签被遗漏在数据标题之外。
有没有办法更简单地使用 pandas 来做到这一点?
【问题讨论】:
标签: python pandas data-import