读取具有多个标题的CSV

读取具有多个标题的CSV,csv,pandas,Csv,Pandas,我有一个简单的CSV文件,我不知道如何拉入数据帧 test.csv h1 h2 h3 11 12 13 h4 h5 h6 14 15 16 正如您所看到的,如果上面的csv被分割成两个单独的文件,那么将它们读入数据帧将很容易。每套数据之间都有一个空格,而且它们的长度总是相同的 我要创建的数据帧: H1H2H3H4H5H6 11 12 13 14 15 16 数据肯定不是友好的形状,即使每个部分中有多行数据,以下解决方案也应该有效: In [67]: %%file temp.csv h1

我有一个简单的CSV文件,我不知道如何拉入数据帧

test.csv

h1 h2 h3
11 12 13
h4 h5 h6
14 15 16
正如您所看到的,如果上面的csv被分割成两个单独的文件,那么将它们读入数据帧将很容易。每套数据之间都有一个空格,而且它们的长度总是相同的

我要创建的数据帧:

H1H2H3H4H5H6
11 12 13 14 15 16  

数据肯定不是友好的形状,即使每个部分中有多行数据,以下解决方案也应该有效:

In [67]:

%%file temp.csv
h1 h2 h3
11 12 13
10 10 10

h4 h5 h6
14 15 16
10 10 10
Overwriting temp.csv
In [68]:

df=pd.read_csv('temp.csv', sep=' ', header=None)
df=df.dropna()
df.index=df[0].map(lambda x: not x.isdigit()).cumsum()
gp=df.groupby(df.index)
df2=np.hstack([gp.get_group(i) for i in gp.groups])
In [69]:

print pd.DataFrame(df2[1:].astype(float),columns=df2[0])
   h1  h2  h3  h4  h5  h6
0  11  12  13  14  15  16
1  10  10  10  10  10  10

[2 rows x 6 columns]

有谁有更好的想法,特别是更小内存占用的解决方案吗?在这里,我构建了一个新的
numpy
阵列
df2
,这当然意味着更多的RAM使用。

比CT Zhu的解决方案效率和智能更低,但可能更简单:

import pandas as pd
from StringIO import StringIO

with open ('foo.csv', 'r') as myfile:
    data = myfile.read().split('\n\n')

pieces = [pd.read_csv(StringIO(x),sep=' ') for x in data]
print pd.concat(pieces,axis=1)

   h1  h2  h3  h4  h5  h6
0  11  12  13  14  15  16
1  10  10  10  10  10  10