如何使用pandas从csv读取多行到单个数据帧行

时间:2017-02-28 15:43:54

标签: python csv pandas

我有一个文件,对第一行有一个注释,后面是两行,其中标题的名称在它们之间滑动,第三行包含索引的名称。该文件如下所示:

# 3 5 <-- this is a comment indicating how many rows and column are matrix data
head1 head2 head3
head4 head5
idx1 idx2 idx3

1.1 1.2 1.3 
1.4 1.5
2.1 2.2 2.3
2.4 2.5
3.1 3.2 3.3
3.4 3.5

如何使用pandas读取文件以使数据框看起来像这样?

        head1 head2 head3 head4 head5
idx1    1.1   1.2   1.3   1.4   1.5
idx2    2.1   2.2   2.3   2.4   2.5
idx3    3.1   3.2   3.3   3.4   3.5

1 个答案:

答案 0 :(得分:5)

您可以指定read_csvskiprows关键字,以便创建一个包含所有3值行的数据框(通过跳过2值的数据),然后创建另一个包含的数据框所有2值线。请注意,您可以使用header关键字指定标题行。

因此,您可以将csv文件解析为两个不同的数据框,以后可以concatenate

作为一个例子(假设3值线是偶数行,2值线是奇数行):

df3 = pd.read_csv(..., skiprows=filter(lambda x: x%2 == 1, range(N)))
df2 = pd.read_csv(..., skiprows=filter(lambda x: x%2 == 0, range(N)))

然后您可以使用concat将两个数据帧连接成一个数据框:

df = pd.concat((df3, df2))