pandas multiindex将标签添加到索引级别

时间:2018-07-12 15:41:32

标签: pandas dataframe indexing

我有一个带有multiindex的熊猫数据框,如下所示:

    let url = URL.init(string: "https://{my_server}/log")
    let parameters: Parameters = [
        "data": "error_log"
    ]
    let encoding: ParameterEncoding = URLEncoding(destination: .httpBody)
    let headers: HTTPHeaders = [
        "Content-type": "application/x-www-form-urlencoded"
    ]

    Alamofire.request(url!, method: HTTPMethod.post, parameters: parameters, encoding: encoding, headers: headers).responseJSON { response in
            print(NSString(data: (response.request?.httpBody)!, encoding: String.Encoding.utf8.rawValue)!)
            //prints data=error_log

    }

[68行x 1列]

在该数据集中,“ DAY”,“ NODE”和“ CLASS”是索引的一部分。

现在,我必须在“ TALLY DAY NODE CLASS 2018-02-04 pdk2r08o005 3 7.0 2018-02-05 pdk2r08o005 3 24.0 2018-02-06 dsvtxvCsdbc02 3 2.0 pdk2r08o005 3 28.0 2018-02-07 pdk2r08o005 3 24.0 2018-02-08 dsvtxvCsdbc02 3 3.0 pdk2r08o005 3 24.0 2018-02-09 pdk2r08o005 3 24.0 2018-02-10 dsvtxvCsdbc02 3 2.0 pdk2r08o005 3 24.0 2018-02-11 pdk2r08o005 3 31.0 2018-02-12 pdk2r08o005 3 24.0 2018-02-13 pdk2r08o005 3 20.0 2018-02-14 dsvtxvCsdbc02 3 4.0 pdk2r08o005 3 24.0 2018-02-15 dsvtxvCsdbc02 3 2.0 pdk2r08o005 3 24.0 2018-02-16 dsvtxvCsdbc02 3 121.0 pdk2r08o005 3 26.0 2018-02-17 dsvtxvCsdbc02 3 401.0 pdk2r08o005 3 24.0 2018-02-18 dsvtxvCsdbc02 3 327.0 pdk2r08o005 3 24.0 2018-02-19 dsvtxvCsdbc02 3 164.0 pdk2r08o005 3 24.0 2018-02-20 dsvtxvCsdbc02 3 26.0 pdk2r08o005 3 38.0 2018-02-21 pdk2r08o005 3 24.0 2018-02-22 pdk2r08o005 3 24.0 2018-02-23 pdk2r08o005 3 24.0 ... 2018-03-01 pdk2r08o005 3 24.0 2018-03-02 pdk2r08o005 3 24.0 2018-03-03 pdk2r08o005 3 24.0 2018-03-04 pdk2r08o005 3 36.0 2018-03-05 pdk2r08o005 3 24.0 2018-03-06 dsvtxvCsdbc02 3 2.0 pdk2r08o005 3 24.0 2018-03-07 dsvtxvCsdbc02 3 8.0 pdk2r08o005 3 24.0 2018-03-08 pdk2r08o005 3 31.0 2018-03-09 pdk2r08o005 3 24.0 2018-03-10 pdk2r08o005 3 24.0 2018-03-11 dsvtxvCsdbc02 3 2.0 pdk2r08o005 3 39.0 2018-03-12 pdk2r08o005 3 24.0 2018-03-13 pdk2r08o005 3 24.0 2018-03-14 dsvtxvCsdbc02 3 4.0 pdk2r08o005 3 24.0 2018-03-15 dsvtxvCsdbc02 3 2.0 pdk2r08o005 3 24.0 2018-03-16 dsvtxvCsdbc02 3 2.0 pdk2r08o005 3 24.0 2018-03-17 dsvtxvCsdbc02 3 4.0 pdk2r08o005 3 24.0 2018-03-18 dsvtxvCsdbc02 3 12.0 9 2.0 pdk2r08o005 3 24.0 2018-03-19 pdk2r08o005 3 44.0 2018-03-20 pdk2r08o005 3 24.0 2018-03-21 pdk2r08o005 3 18.0 ”列中填写一些缺少的日期。

赞:

DAY

如何使用此date_range将日期添加到数据集的索引中?

1 个答案:

答案 0 :(得分:0)

我已经找到答案了,如下:

按以下结构读取数据帧“ df”。

                     NODE  CLASS  TALLY
DAY                                    
2018-02-04    pdk2r08o005      3    7.0
2018-02-05    pdk2r08o005      3   24.0
2018-02-06  dsvtxvCsdbc02      3    2.0
2018-02-06    pdk2r08o005      3   28.0
2018-02-07    pdk2r08o005      3   24.0
2018-02-08  dsvtxvCsdbc02      3    3.0
2018-02-08    pdk2r08o005      3   24.0
2018-02-09    pdk2r08o005      3   24.0
2018-02-10  dsvtxvCsdbc02      3    2.0
2018-02-10    pdk2r08o005      3   24.0
2018-02-11    pdk2r08o005      3   31.0
2018-02-12    pdk2r08o005      3   24.0
2018-02-13    pdk2r08o005      3   20.0
2018-02-14  dsvtxvCsdbc02      3    4.0
2018-02-14    pdk2r08o005      3   24.0
2018-02-15  dsvtxvCsdbc02      3    2.0
2018-02-15    pdk2r08o005      3   24.0
2018-02-16  dsvtxvCsdbc02      3  121.0
2018-02-16    pdk2r08o005      3   26.0
2018-02-17  dsvtxvCsdbc02      3  401.0
2018-02-17    pdk2r08o005      3   24.0
2018-02-18  dsvtxvCsdbc02      3  327.0
2018-02-18    pdk2r08o005      3   24.0
2018-02-19  dsvtxvCsdbc02      3  164.0
2018-02-19    pdk2r08o005      3   24.0
2018-02-20  dsvtxvCsdbc02      3   26.0
2018-02-20    pdk2r08o005      3   38.0
2018-02-21    pdk2r08o005      3   24.0
2018-02-22    pdk2r08o005      3   24.0
2018-02-23    pdk2r08o005      3   24.0
                  ...    ...    ...
2018-03-01    pdk2r08o005      3   24.0
2018-03-02    pdk2r08o005      3   24.0
2018-03-03    pdk2r08o005      3   24.0
2018-03-04    pdk2r08o005      3   36.0
2018-03-05    pdk2r08o005      3   24.0
2018-03-06  dsvtxvCsdbc02      3    2.0
2018-03-06    pdk2r08o005      3   24.0
2018-03-07  dsvtxvCsdbc02      3    8.0
2018-03-07    pdk2r08o005      3   24.0
2018-03-08    pdk2r08o005      3   31.0
2018-03-09    pdk2r08o005      3   24.0
2018-03-10    pdk2r08o005      3   24.0
2018-03-11  dsvtxvCsdbc02      3    2.0
2018-03-11    pdk2r08o005      3   39.0
2018-03-12    pdk2r08o005      3   24.0
2018-03-13    pdk2r08o005      3   24.0
2018-03-14  dsvtxvCsdbc02      3    4.0
2018-03-14    pdk2r08o005      3   24.0
2018-03-15  dsvtxvCsdbc02      3    2.0
2018-03-15    pdk2r08o005      3   24.0
2018-03-16  dsvtxvCsdbc02      3    2.0
2018-03-16    pdk2r08o005      3   24.0
2018-03-17  dsvtxvCsdbc02      3    4.0
2018-03-17    pdk2r08o005      3   24.0
2018-03-18  dsvtxvCsdbc02      3   12.0
2018-03-18  dsvtxvCsdbc02      9    2.0
2018-03-18    pdk2r08o005      3   24.0
2018-03-19    pdk2r08o005      3   44.0
2018-03-20    pdk2r08o005      3   24.0
2018-03-21    pdk2r08o005      3   18.0

我正在像下面那样从表中读取

df = pd.read_sql('select DAY,NODE,CLASS,TALLY FROM TABLE', con=cnx, index_col=['DAY'])
df.index = pd.to_datetime(dataset.index)

为给定的日期范围创建一个具有类似结构的新数据框“ df1”

date_range = pd.date_range(start='02-01-2018',end='03-21-2018',name='DAY')
df1 = pd.DataFrame({"NODE":[np.nan],"CLASS":[np.nan],"TALLY":[np.nan]},index=date_range)

将新数据集追加到旧数据集

df = df.append(df1)

获取多重索引

indices = pd.MultiIndex.from_product(df.index.levels)

重新索引数据集

df = df.reindex(indices,fill_value=0)

中提琴要求的数据结构是新的输出。