python - 如何将具有多个标题的 CSV 文件读取到 pandas 中的两个 DataFrame 中,一个包含标题,另一个包含删除了一些标题的数据?

标签 python pandas csv dataframe

我有一个 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/

相关文章:

python - 如何禁用flask app.run() 的默认消息?

python - 如何找到哪个文件是 "initiator"Python

pandas - 使用 to_datetime 将数据框对象转换为日期

C# ListView 重复 csv 中的 1 列

Python:将字段值提取到新列中,写入Excel

php - 使用 PHP 查找 CSV 文件中是否存在某个值

python - 从一个或多个需求文件从多个服务器安装包

python - 如何在整个工作簿中使用 Excel 的格式刷

python - 将列表转换为数据框 PYTHON - SQL

python - 广播 groupby 结果作为原始 DataFrame 中的新列