pandas multiindex将标签添加到索引级别 [英] pandas multiindex add labels to an index level
问题描述
我有一个带有multiindex的熊猫数据框,如下所示:
I have a pandas dataframe with multiindex as the following:
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
[68行x 1列]
[68 rows x 1 columns]
在该数据集中,"DAY","NODE"和"CLASS"是索引的一部分.
In this dataset "DAY", "NODE" and "CLASS" are the part of index.
现在,我必须在" DAY
"列中填写一些缺少的日期.
Now I have to fill in some missing dates in "DAY
" column.
赞:
date_range = pd.date_range('02-06-2018','03-18-2018')
indices = pd.MultiIndex.from_product(dataset.index.levels)
如何使用此date_range将日期添加到数据集的索引中?
How to use this date_range to add dates to the indices of the dataset?
推荐答案
我已经找到答案了,如下所示:
I have figured out the answer for this and it is as follows:
按以下结构读取数据帧"df".
Read the dataframe "df" in following structure.
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
我正在像下面那样从表中读取它
I am reading it from table like following
df = pd.read_sql('select DAY,NODE,CLASS,TALLY FROM TABLE', con=cnx, index_col=['DAY'])
df.index = pd.to_datetime(dataset.index)
为给定的日期范围创建一个具有类似结构的新数据框"df1"
create a new dataframe "df1" with the similar structure for given date range
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)
将新数据集追加到旧数据集
Append new dataset into old dadaset
df = df.append(df1)
获取多重索引
indices = pd.MultiIndex.from_product(df.index.levels)
重新索引数据集
df = df.reindex(indices,fill_value=0)
中提琴要求的数据结构是新的输出.
And viola the asked datastructure is the new output.
这篇关于pandas multiindex将标签添加到索引级别的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!