【发布时间】:2016-10-15 19:58:14
【问题描述】:
我正在尝试在 3 个或更多不同的数据帧之间进行加权求和。
这 3 个数据帧中的每一个都具有相同的形式。
df1 = pd.DataFrame([
{'rowid':1,'predict1': 'choice1', 'predict2': 'choice2', 'predict3': 'choice3'},
{'rowid':2,'predict1': 'choice4', 'predict2': 'choice5', 'predict3': 'choice1'},
])
df2 = pd.DataFrame([
{'rowid':1,'predict1': 'choice1', 'predict2': 'choice3', 'predict3': 'choice4'},
{'rowid':2,'predict1': 'choice1', 'predict2': 'choice5', 'predict3': 'choice4'},
])
df3 = pd.DataFrame([
{'rowid':1,'predict1': 'choice2', 'predict2': 'choice3', 'predict3': 'choice1'},
{'rowid':2,'predict1': 'choice4', 'predict2': 'choice1', 'predict3': 'choice6'},
])
我正在尝试使用这些数据进行统计(基于给定数据帧的权重和给定预测的权重。例如,每个数据帧的权重可能是:
weights_dataframe = { 'df1': 1.1, 'df2': 1.2, 'df3': 0.9 }
weights_predictions= { 'predict1': 1.0, 'predict2': 0.5, 'predict3': 0.333 }
每一行都有一个基于所有数据帧的单独计数。例如,'choice1', 'rowid':1 的计数将是:
tally_row1_choice1 = 1.1*1.0 + 1.2*1.0 + 0.9*0.333
基于此操作,我正在尝试生成一个新的数据框结果,该结果将显示前 3 个选项(最高总和到第三高总和)。
理想情况下,我想做这样的事情:
tally = getTop3ForEachRow(df1,df2,df3)
result = pd.DataFrame([
{'rowid':1, 'predict1': tally[0][0], 'predict2': tally[0][1], 'predict3': tally[0][2] },
{'rowid':2, 'predict1': tally[1][0], 'predict2': tally[1][1], 'predict3': tally[1][2] }
])
实现 getTop3ForEachRow() 的 Python 方法是什么?是否可以将其作为数据框公式执行? numpy 是否适合处理这种类型的制表?
【问题讨论】:
标签: arrays python-2.7 numpy pandas weighted