我有一个 CSV 文件,其中前几行代表标题。我想将其读入两个DataFrames
。第一个 DataFrame 应包含文件的全部内容(某些 header 除外)。第二个 DataFrame
应包含所有 header 。
示例。假设我们有一个名为 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
进行此类拆分的推荐方法是什么?
最佳答案
您可以使用:
#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
关于python - 如何将具有多个标题的 CSV 文件读取到 pandas 中的两个 DataFrame 中,一个包含标题,另一个包含删除了一些标题的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48093437/