熊猫清理

时间:2019-03-04 16:59:29

标签: python pandas data-cleaning

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

I have an excel file in this format and I am trying to read it in Pandas and clean it up

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

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

这是它的读入方式:

This is how it read in:

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

Ideally, I want to clean up to look something like this:

我应该遵循什么步骤来获得这种格式? 我尝试过的几件事是: 1.删​​除多重索引的1级:列名称显示为“未命名...”

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

这给我一个错误: IndexError:级别太多:索引只有1个级别,没有2

  1. 堆叠列索引:

    df.stack()
    

这给我一个错误: TypeError:'str'和'int'的实例之间不支持'>'

  1. 我尝试过:

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

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

第一步,我要删除“未命名...”列的名称。我试图将df作为输出而不是图片发布,但是不确定如何以正确的方式进行操作-当我从jupyter笔记本复制粘贴时,它们会将所有粘贴都弄乱了。我是在这里发布问题的新手,所以仍然可以解决我的问题。

1 个答案:

答案 0 :(得分:0)

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

我将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