我有 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/日期匹配对都加起来带有权重(因此是加权平均值(。
有没有一个简单的数据帧命令来执行此操作?
如果我理解正确,我们可以执行以下操作。
首先将数据帧连接到一个具有pandas.concatenate
的数据帧,同时我们使用DataFrame.reset_index
重置索引。
然后我们在列上使用Dataframe.groupby
Date & IDs
并取Values
的mean
:
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