我正在尝试在文件的单独部分中读取带有分层索引的空格分隔文件。这就是我想出的:
import pandas as pd
o = open(doc, 'rU')
for i in o:
if i.startswith("DATA="):
meta_ends=o.tell() + 5
break
dp = pd.read_table(o, delim_whitespace=True,
lineterminator='\n', header=None, index_col=None)
文件如下所示:
META (the exact structure is probably not relevant for this example)
DATA=1 2 3 4
5 6 7 9
10 11 12 13
数据具有空格分隔的列和换行符分隔的行。
我用 为行和列创建了 MultiIndexes,pd.MultiIndex.from_arrays
我分别对其进行解析。这就是我应该结束的:
Column 1 Column 2
Row label 1 Row label 2
Koko maa 1989 2008231.0 4891866.0
1990 2036693.0 4924388.0
Akaa 1989 6436.0 15637.0
1990 6548.0 15775.0
Alajärvi 1989 3777.0 11653.0
1990 3831.0 11747.0
我以前的方法是将数据部分读入内存,然后像这样创建一个 DataFrame:
col_index = pd.MultiIndex.from_arrays(cols)
row_index = pd.MultiIndex.from_arrays(rows)
return pd.DataFrame(data, index=row_index, columns=col_index)
使用 500Mb+ 数据和 5M 行标签和 50+ 列 Pandas 读取所有可用内存(16Gt 带交换,这不起作用)。使用 read_table,我可以通过只读取一次数据部分来节省内存。
我的问题是如何将行和列的 MultiIndexes 设置为现有的 DataFrame?
或者有没有办法给 read_table 一个外部的 MultiIndex?