Python 复杂的csv格式:两行中的列

Python 复杂的csv格式:两行中的列,python,pandas,Python,Pandas,下面是(我认为是)一个非常尴尬的文件头,我现在正在研究: ,,,1980,1981,1982,1983,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012 "Office","Office(code)","Origin" "Albania","AL","Tota

下面是(我认为是)一个非常尴尬的文件头,我现在正在研究:

,,,1980,1981,1982,1983,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012
"Office","Office(code)","Origin"
"Albania","AL","Total",,,,,,,,,,,,,,,,,,,,,6,49,87,201,390,395,116,420,541,402,349,21,,

也就是说,前两行一起构成标题。有没有什么方法可以将
read\u csv()
应用于此,而无需任何重大麻烦?

您可以手动解析前两行,然后将其余内容传递到
read\u csv
,例如:

with open('data.csv') as f:
    headers = f.readline().strip().split(',') # get years
    headers[:3] = f.readline().strip().split(',') # update first three columns
    data = pd.read_csv(f, names=headers)

请注意,这将把文件句柄
f
传递到
read_csv
,其中“read head”已经位于第三行的开头。

您可以手动解析前两行,然后将其余的传递到
read_csv
,例如:

with open('data.csv') as f:
    headers = f.readline().strip().split(',') # get years
    headers[:3] = f.readline().strip().split(',') # update first three columns
    data = pd.read_csv(f, names=headers)

请注意,这将把文件句柄
f
传递到
read_csv
,其中“read head”已经位于第三行的开头。

您可以手动解析前两行,然后将其余的传递到
read_csv
,例如:

with open('data.csv') as f:
    headers = f.readline().strip().split(',') # get years
    headers[:3] = f.readline().strip().split(',') # update first three columns
    data = pd.read_csv(f, names=headers)

请注意,这将把文件句柄
f
传递到
read_csv
,其中“read head”已经位于第三行的开头。

您可以手动解析前两行,然后将其余的传递到
read_csv
,例如:

with open('data.csv') as f:
    headers = f.readline().strip().split(',') # get years
    headers[:3] = f.readline().strip().split(',') # update first three columns
    data = pd.read_csv(f, names=headers)

请注意,这会将文件句柄
f
传递到
read\u csv
,其中“read head”已经位于第三行的开头。

在两行标题中读取,这会给出一个多索引,然后尝试以某种方式展平多索引。这样行吗?读入两行标题,其中给出一个多索引,然后尝试以某种方式展平多索引。这样行吗?读入两行标题,其中给出一个多索引,然后尝试以某种方式展平多索引。这样行吗?读入两行标题,其中给出一个多索引,然后尝试以某种方式展平多索引。你喜欢那样的工作吗?