【发布时间】:2018-09-28 14:10:30
【问题描述】:
假设我有两个这样的熊猫数据框:
df1 = pd.DataFrame({'Component': ['A','B','C','D'],'Theme': ['T1','T2','T3','T3'],'Weights': [0.5,0.1,0.1,0.3]},index=[0, 1, 2, 3])
df2 = pd.DataFrame({'A': [-0.1,0.05,-0.07,-0.5,0.02],'B': [-0.3,0.02,-0.01,-0.4,0.01],'C': [-0.8,0.00,-0.01,-0.1,0.07],'D': [-0.08,0.1,-0.01,-0.05,0.03],},index=[0, 1, 2, 3,4])
我正在寻找一种“智能方式”来计算按主题分组的两个数据框的“sumproduct”(或点积)。问题是第二个数据帧中缺少“主题”,链接这两个数据帧的唯一方法是通过组件。
我们举个例子: 对于 Theme T3,结果应该是这样的数据框:
df3=pd.DataFrame({'T3':[-0.104,0.03,-0.004,-0.025,0.016]},index=[0, 1, 2, 3,4])
计算细节如下(df1(按主题T3过滤)和df2的sumproduct:
0.1*-0.8+0.3*-0.08 = -0.104
0.1*0+0.3*0.1=0.03
0.1*-0.01+0.3*-0.01=-0.004
0.1*-0.1+0.3*-0.05=-0.025
0.1*0.07+0.3*0.03=0.016
如果我们在两个 numpy 数组中转换 df1 和 df2,我们可以做 tranpose(df1) 和 transpose(df2) 的点积。那会很完美。但是,由于我需要按主题过滤,所以我有点卡住了。
总的来说,我想要 3 个数据框(因为我有 3 个主题)
有什么建议吗?谢谢。
【问题讨论】:
标签: python pandas numpy filter