如何在Python Pandas中将具有权重的MultiIndex Dataframe合并?

时间:2019-04-14 10:04:53

标签: python pandas dataframe merge multi-index

我有3个多索引数据帧,其结构如下:

     Dataframe1:

     Date      IDs     Values
     Date1     ID4     0.5
               ID5     2.3
               ID6     3.1
     Date2     ID1     1.2
               ID4     5.1
     ...


     Dataframe2:

     Date      IDs     Values
     Date1     ID1     2.5
               ID2     3.3
               ID4     4.1
     Date2     ID3     5.2
               ID4     1.1
     ...

same for dataframe3

在每个实例中,日期和ID大多重复,但是可能有些没有完全对齐。

我需要将所有3个数据合并到一个具有相同结构的数据帧中,但每个id / date匹配对都要加上权重(因此是加权平均值)。

是否有简单的数据框命令来执行此操作?

1 个答案:

答案 0 :(得分:1)

如果我对您的理解正确,我们可以执行以下操作。

首先使用pandas.concatenate将数据帧连接为一个数据帧,同时使用DataFrame.reset_index重置索引。

然后我们在列Date & IDs上使用Dataframe.groupby并取mean的{​​{1}}:

Values

哪种产量:

df_all = pd.concat([df1.reset_index(), df2.reset_index()])

df_all = df_all.groupby(['Date', 'IDs'], as_index=False)['Values'].mean()