如何将带有多个标题的CSV文件读入pandas中的两个DataFrame,一个带有标题,另一个带有删除了一些标题的数据?

时间:2018-01-04 10:37:49

标签: python pandas csv dataframe

我有一个CSV文件,其中有几个第一行代表标题。我想把它读成两个DataFrames。第一个DataFrame应包含文件的全部内容,但某些标头除外。第二个DataFrame应包含所有标题。

实施例。假设我们有一个名为mh.csv的CSV文件,其中第一行代表标题。

Name,Height,Age
"",Metres,""
A,-1,25
B,95,-1

第一个DataFrame应包含mh.csv文件的全部内容,第二行已删除:

    Name  Height  Age    

0   A     NaN     25.0
1   B     95.0    NaN

第二个DataFrame应包含mh.csv文件的第一行:

    Name  Height   Age
0         Metres 

这种拆分的推荐方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以使用:

#read file with MultiIndex
df = pd.read_csv(file, header=[0,1], na_values=[-1,''])
    print (df)
                Name Height                Age
  Unnamed: 0_level_1 Metres Unnamed: 2_level_1
0                  A    NaN               25.0
1                  B   95.0                NaN


df1 = df.copy()
#remove first level of MultiIndex
df1.columns = df1.columns.droplevel(1)
print (df1)
  Name  Height   Age
0    A     NaN  25.0
1    B    95.0   NaN

#select first level of MultiIndex
a = df.columns.get_level_values(level=0)
#select second level of MultiIndex and replace Unnamed
b = df.columns.get_level_values(level=1).str.replace('Un.*','')
#DataFrame constructor
df2 = pd.DataFrame([a, b])
print (df2)
      0       1    2
0  Name  Height  Age
1        Metres