【问题标题】:Pandas Cleaning up熊猫清理
【发布时间】:2019-07-26 01:09:51
【问题描述】:

我有一个这种格式的 excel 文件,我正在尝试在 Pandas 中读取并清理它:

我用 read_excel 读入文件并从第 7 行开始创建了一个多索引级别([2013,2016,2017...]

    df= pd.read_excel(PATH_CY_TABLE, header= [7,8,9])

它是这样读入的:

理想情况下,我希望清理后看起来像这样:

我可以按照哪些步骤来获得这种格式? 我尝试过的几件事是: 1.删​​除多索引的级别1:列名称显示为'未命名...'

    df.columns= df.columns.get_level_values(1)

这给了我一个错误:IndexError: Too many levels: Index has only 1 level, not 2

  1. 堆叠列索引:

    df.stack()
    

这给了我一个错误:TypeError: '>' not supported between 'str' and 'int'

  1. 我试过这个:

    df.columns=df.columns.get_level_values(0)
    

这给了我作为 [2013, 2013, 2013, 2016,2016,2016...] 的第一级 MultiIndex。但我希望输出 df 在这里有两个级别的索引:0 级和 3 级。

作为第一步,我希望删除“未命名...”列名称。我试图将 df 作为输出而不是图片发布,但不确定如何以正确的方式进行操作——当我从 jupyter notebook 复制粘贴时,它们粘贴的东西都搞砸了。我对在这里发布问题很陌生……所以仍在努力。

【问题讨论】:

  • 拥有可重现的数据示例和一些您尝试过的代码将帮助您获得帮助。
  • 请张贴一个小样本df和一个预期的df作为文本(无图像),并简要解释逻辑。谢谢
  • dropna(how='all') 可以吗?
  • 我尝试将 df 作为输出而不是图片发布,但不确定如何以正确的方式进行操作 - 当我从 jupyter notebook 复制粘贴时,它们粘贴的内容都搞砸了。我对在这里发布问题很陌生……所以仍在努力。谢谢!

标签: python pandas data-cleaning


【解决方案1】:

我仍然无法找到更好的方法来发布我的输出,但我想办法将文件清理为所需的输出:

我将 MultiLevelIndex 级别 0 切片以匹配我想要的年份(2017 年)

    df1= df
    df1= df1.iloc[:, df1.columns.get_level_values(0)== 2017]

输出:

                                                     Number      MOE1 (±)  Rate  
    Total..........................................…  323156.0    123.0     X   
    NaN                                                    NaN      NaN   NaN   
    Any health plan……………….……...…                      294613.0    662.0  91.2   
    NaN                                                    NaN      NaN   NaN   
   .Any private plan2,3………………………                     217007.0   1158.0  67.2 

【讨论】:

    猜你喜欢
    • 2019-05-13
    • 2019-07-24
    • 2017-04-29
    • 2015-02-03
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 2018-12-17
    • 2018-10-29
    相关资源
    最近更新 更多