我有一个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
这种拆分的推荐方法是什么?
答案 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