【问题标题】:Reading multi header excel sheet in pandas在熊猫中读取多标题excel表
【发布时间】:2019-03-08 15:25:12
【问题描述】:

我有一个没有任何索引列的多标题 Excel 表。当我在 pandas 中阅读 excel 时,它将第一列视为索引。我希望熊猫创建索引而不是将第一列视为索引。任何帮助将不胜感激。

我试过下面的代码:

df = pd.read_excel(file, header=[1,2], sheetname= "Ratings Inputs", parse_cols ="A:AA", index_col=None)

【问题讨论】:

    标签: python excel pandas


    【解决方案1】:

    根据我的测试,read_csv 似乎被多行标题破坏:当index_col 不存在或无时,它的行为就像是 0。

    您有两种可能的解决方法:

    1. reset_index@mounaim 建议:

      df = pd.read_excel(file, header=[1,2], sheetname= "Ratings Inputs",
                         parse_cols ="A:AA", index_col=None).reset_index()
      

      这几乎是正确的,只是第一列的标题用于命名MultiIndex df.columns 并且第一列命名为 `('index', '')。所以你必须重新创建它:

      df.columns = pd.MultiIndex.from_tuples([tuple(df.columns.names)]
                                         + list(df.columns)[1:])
      
    2. 单独阅读标题

      head = pd.read_excel('3x3.xlsx', header=None, sheetname= "Ratings Inputs",
                         parse_cols ="A:AA", skiprows=1, nrows=2)
      df = pd.read_excel(file, header=2, sheetname= "Ratings Inputs",
                         parse_cols ="A:AA", index_col=None).reset_index()
      df.columns = pd.MultiIndex.from_tuples(list(head.transpose().to_records(index=False)))
      

    【讨论】:

      【解决方案2】:

      你试过reset_index() :
      your_data_frame.reset_index(drop=True,inplace=True)

      【讨论】:

      • 当我使用“inplace=True”时,我的数据框没有返回任何值
      • 通过显示 your_data_frame.index 来检查它是否已经改变,'inplace' 就地改变对象并且不返回一个新的
      猜你喜欢
      • 2018-10-14
      • 2015-05-30
      • 2021-05-27
      • 2018-11-01
      • 2020-02-10
      相关资源
      最近更新 更多