如何在Python Pandas中将MultiIndex Dataframes与权重合并?

问题描述 投票:0回答:1

我有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匹配对与权重相加(所以加权平均值)。

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

python pandas dataframe merge multi-index
1个回答
1
投票

如果我理解正确,我们可以做以下事情。

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

然后我们在Dataframe.groupby列上使用Date & IDs并使用meanValues

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

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

产量:

print(df_all)
    Date  IDs  Values
0  Date1  ID1     2.5
1  Date1  ID2     3.3
2  Date1  ID4     2.3
3  Date1  ID5     2.3
4  Date1  ID6     3.1
5  Date2  ID1     1.2
6  Date2  ID3     5.2
7  Date2  ID4     3.1
© www.soinside.com 2019 - 2024. All rights reserved.