【问题标题】:Is there a way to multiply 'pandas' DataFrame based on the same columns or index?有没有办法根据相同的列或索引来乘以“熊猫”数据帧?
【发布时间】:2015-07-17 21:18:46
【问题描述】:

例如,我有两个表:

pA_B_array=np.array([[0.9,0.8,0.3],[0.1,0.2,0.7]])
pA_B=pd.DataFrame(pA_B_array,index=['A=F','A=T'],columns=['B=n','B=m','B=s']).stack()
pB_array=np.array([[0.97],[0.01],[0.02]])
pB = pd.DataFrame(pB_array,index=['B=n','B=m','B=s'])
A=F  B=n    0.9
     B=m    0.8
     B=s    0.3
A=T  B=n    0.1
     B=m    0.2
     B=s    0.7
dtype: float64
        0
B=n  0.97
B=m  0.01
B=s  0.02

我会根据相同的标签或相同的索引将它们相乘并得到:

A=F  B=n    0.9*0.97
     B=m    0.8*0.01
     B=s    0.3*0.02
A=T  B=n    0.1*0.97
     B=m    0.2*0.01
     B=s    0.7*0.02

有什么优雅的方法吗?

【问题讨论】:

  • 如果我的回答回答了你的问题你能接受吗,我的回答左上角会有一个空的勾号,谢谢

标签: python pandas


【解决方案1】:

您可以在pB 上调用.mul 并传入pA_B 并传递参数level=1 以匹配该索引级别和axis=0,以便按行执行:

In [255]:

pB.mul(pA_B, level=1, axis=0)
Out[255]:
             0
A=F B=n  0.873
    B=m  0.008
    B=s  0.006
A=T B=n  0.097
    B=m  0.002
    B=s  0.014

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-21
    • 2019-06-29
    • 1970-01-01
    • 2022-12-12
    • 2017-04-28
    • 2015-08-28
    相关资源
    最近更新 更多