python – 在DataFrame中乘以多个列
发布时间:2020-12-20 13:49:50 所属栏目:Python 来源:网络整理
导读:我正在尝试将DataFrame中的N列乘以同一DataFrame中的N列,然后将结果除以一列.我在第一部分遇到问题,请参见下面的示例. import pandas as pdfrom numpy import randomfoo = pd.DataFrame({'A':random.rand(10),'B':random.rand(10),'C':random.rand(10),'N':r
我正在尝试将DataFrame中的N列乘以同一DataFrame中的N列,然后将结果除以一列.我在第一部分遇到问题,请参见下面的示例.
import pandas as pd from numpy import random foo = pd.DataFrame({'A':random.rand(10),'B':random.rand(10),'C':random.rand(10),'N':random.randint(1,100,10),'X':random.rand(10),'Y':random.rand(10),'Z':random.rand(10),}) foo[['A','B','C']].multiply(foo[['X','Y','Z']],axis=0).divide(foo['N'],axis=0) 我想要的是逐列乘法(即A * X,B * Y,C * Z) A B C X Y Z 0 NaN NaN NaN NaN NaN NaN 1 NaN NaN NaN NaN NaN NaN 2 NaN NaN NaN NaN NaN NaN 3 NaN NaN NaN NaN NaN NaN 4 NaN NaN NaN NaN NaN NaN 5 NaN NaN NaN NaN NaN NaN 6 NaN NaN NaN NaN NaN NaN 7 NaN NaN NaN NaN NaN NaN 8 NaN NaN NaN NaN NaN NaN 9 NaN NaN NaN NaN NaN NaN 这里发生了什么,我如何进行逐列乘法? 解决方法
这将使用列X,Y,Z和N中的值,但它可能会帮助您查看问题所在:
>>> (foo[['A','C']] .multiply(foo[['X','Z']].values) .divide(foo['N'].values,axis=0)) A B C 0 0.000452 0.004049 0.010364 1 0.004716 0.001566 0.012881 2 0.001488 0.000296 0.004415 3 0.000269 0.001168 0.000327 4 0.001386 0.008267 0.012048 5 0.000084 0.009588 0.003189 6 0.000099 0.001063 0.006493 7 0.009958 0.035766 0.012618 8 0.001252 0.000860 0.000420 9 0.006422 0.005013 0.004108 结果在列A,B,C上编制索引.不清楚结果列应该是什么,这就是您获取NaN的原因. 使用.values附加上面的函数将为您提供所需的结果,但是由您来替换索引和列. >>> (foo[['A',axis=0)).values array([[ 4.51754797e-04,4.04911292e-03,1.03638836e-02],[ 4.71588457e-03,1.56556402e-03,1.28805803e-02],[ 1.48820116e-03,2.95700572e-04,4.41516179e-03],[ 2.68791866e-04,1.16836123e-03,3.27217820e-04],[ 1.38648301e-03,8.26692582e-03,1.20482313e-02],[ 8.38762247e-05,9.58768066e-03,3.18903965e-03],[ 9.94132918e-05,1.06267623e-03,6.49315435e-03],[ 9.95764539e-03,3.57657737e-02,1.26179014e-02],[ 1.25210929e-03,8.59735215e-04,4.20124326e-04],[ 6.42175897e-03,5.01250179e-03,4.10783492e-03]]) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |