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