如何在python中对三个数据帧进行多数投票



我有三个Dataframe (dataframe1, dataframe2, dataframe3)

import pandas as pd
data1= [[0, 0, 1, 1], [1,0,1,0], [0,1,1,0], [1,1,0,1]]
dataframe1 = pd.DataFrame(data1, columns=['0', '1', '2', '3'])
dataframe1
data2 = [[1,0,1,0], [0,0,1,0], [0,1,0,1], [0,0,0,1]]
dataframe2 = pd.DataFrame(data2, columns=['0', '1', '2', '3'])
dataframe2
data3 = [[1,0,1,0], [0,0,1,0], [0,0,0,0], [0,1,0,1]]
dataframe3 = pd.DataFrame(data3, columns=['0', '1', '2', '3'])
dataframe3

我需要一个基于以上三个数据帧的每个位置的majority元素的新数据帧

预期结果

1 0 0 0

0 0 0 0 0

0 0 0 0

0 1 0 1

因为每个DataFrame中相同的索引值可以使用concat,然后每个索引通过Series.mode获得多数元素,如果可能的话,需要多个多数元素并且需要一个Series.iat选择第一个值:

df = (pd.concat([dataframe1, dataframe2, dataframe3])
.groupby(level=0)
.agg(lambda x: x.mode().iat[0]))
print (df)
0  1  2  3
0  1  0  1  0
1  0  0  1  0
2  0  1  0  0
3  0  1  0  1

最新更新