加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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)
结果不是N列矩阵而是2N列,其中我想要乘以的列被添加到DataFrame,并且所有条目都具有NaN值,如下所示:

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]])

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读