Python 将两个不同维度的数据帧相乘

Python 将两个不同维度的数据帧相乘,python,pandas,dataframe,Python,Pandas,Dataframe,所以我有两个数据帧,一个大小(462,38),另一个大小(36,34)。理论上,我应该能够将它们相乘(第一个没有前两列的矩阵,即(462,36))得到一个大小为(462,34)的矩阵,但我收到了一个错误。这是我正在使用的脚本: df_technology=df_binary.iloc[:,2::].mul(df_pim.values,axis=0) df_二进制是大小为(462,38)的数据帧 df_pim是大小为(36,34)的数据帧 我得到了这个错误: ValueError: Unable

所以我有两个数据帧,一个大小(462,38),另一个大小(36,34)。理论上,我应该能够将它们相乘(第一个没有前两列的矩阵,即(462,36))得到一个大小为(462,34)的矩阵,但我收到了一个错误。这是我正在使用的脚本:

df_technology=df_binary.iloc[:,2::].mul(df_pim.values,axis=0)

df_二进制是大小为(462,38)的数据帧 df_pim是大小为(36,34)的数据帧

我得到了这个错误:

ValueError: Unable to coerce to DataFrame, shape must be (462, 36): given (36, 34)

对于熊猫来说,这是一个很新的概念,但是对于为什么这不起作用有点困惑。

让我们创建一个小玩具示例:

In [6]: import numpy as np

In [7]: import pandas as pd

In [8]: df1 = pd.DataFrame(np.random.rand(462,38))

In [9]: df2 = pd.DataFrame(np.random.rand(36,34))

In [10]: df1.iloc[:, 2:].shape
Out[10]: (462, 36)
让我们试试
.mul

In [11]: df1.iloc[:, 2:].mul(df2)
Out[11]: 
     0   1         2         3         4         5         6         7  ...        30        31        32        33  34  35  36  37
0   NaN NaN  0.069152  0.433575  0.237038  0.552856  0.007651  0.305549 ...  0.041911  0.490022  0.093998  0.226641 NaN NaN NaN NaN
1   NaN NaN  0.329819  0.024969  0.305772  0.240036  0.298576  0.076755 ...  0.051576  0.246010  0.164661  0.071771 NaN NaN NaN NaN
2   NaN NaN  0.335649  0.143226  0.086966  0.469313  0.096287  0.323846 ...  0.118156  0.509485  0.019587  0.750393 NaN NaN NaN NaN
3   NaN NaN  0.540942  0.140480  0.201622  0.134188  0.436736  0.318038 ...  0.362616  0.018998  0.553993  0.194979 NaN NaN NaN NaN
4   NaN NaN  0.249867  0.410236  0.036971  0.023470  0.001242  0.023679 ...  0.105056  0.766388  0.356008  0.117736 NaN NaN NaN NaN
5   NaN NaN  0.430849  0.154554  0.048016  0.040484  0.026158  0.923512 ...  0.063798  0.242107  0.088325  0.076771 NaN NaN NaN NaN
6   NaN NaN  0.150360  0.048118  0.089665  0.439097  0.008246  0.000882 ...  0.168322  0.672298  0.144217  0.014767 NaN NaN NaN NaN
7   NaN NaN  0.002987  0.338054  0.242131  0.104348  0.583705  0.008956 ...  0.099933  0.005963  0.209813  0.013677 NaN NaN NaN NaN
8   NaN NaN  0.730034  0.576801  0.702868  0.023938  0.025093  0.359022 ...  0.004573  0.118901  0.181754  0.489394 NaN NaN NaN NaN
9   NaN NaN  0.054859  0.140126  0.526472  0.074119  0.503533  0.138453 ...  0.148497  0.033773  0.199062  0.638204 NaN NaN NaN NaN
10  NaN NaN  0.011797  0.018803  0.279219  0.006031  0.351008  0.808695 ...  0.157058  0.368678  0.391322  0.037119 NaN NaN NaN NaN
11  NaN NaN  0.002085  0.006149  0.440413  0.014603  0.114628  0.052740 ...  0.032606  0.031034  0.627347  0.250106 NaN NaN NaN NaN
12  NaN NaN  0.459560  0.396850  0.323084  0.017022  0.113606  0.114051 ...  0.000245  0.152969  0.007480  0.375953 NaN NaN NaN NaN
13  NaN NaN  0.424696  0.774762  0.742045  0.035061  0.013645  0.344456 ...  0.227203  0.315968  0.272345  0.077855 NaN NaN NaN NaN
14  NaN NaN  0.074256  0.545422  0.107654  0.313041  0.276494  0.347180 ...  0.216622  0.266681  0.044627  0.643293 NaN NaN NaN NaN
15  NaN NaN  0.083460  0.003905  0.680099  0.468907  0.034795  0.298261 ...  0.547690  0.045437  0.059649  0.574525 NaN NaN NaN NaN
16  NaN NaN  0.130475  0.413133  0.046050  0.069645  0.156101  0.117565 ...  0.108358  0.026304  0.381912  0.232132 NaN NaN NaN NaN
17  NaN NaN  0.365677  0.238611  0.185642  0.528028  0.051163  0.739312 ...  0.167501  0.613983  0.138576  0.508531 NaN NaN NaN NaN
18  NaN NaN  0.010499  0.694223  0.064765  0.250918  0.219200  0.405163 ...  0.036581  0.579350  0.029583  0.487232 NaN NaN NaN NaN
19  NaN NaN  0.553498  0.622697  0.059322  0.120012  0.243311  0.351804 ...  0.784040  0.222959  0.637571  0.557461 NaN NaN NaN NaN
20  NaN NaN  0.152201  0.536858  0.126313  0.089983  0.091302  0.248702 ...  0.214070  0.035524  0.345542  0.114386 NaN NaN NaN NaN
21  NaN NaN  0.170115  0.157332  0.108346  0.093566  0.492156  0.052809 ...  0.224359  0.763030  0.837852  0.007604 NaN NaN NaN NaN
22  NaN NaN  0.107562  0.125040  0.075692  0.101576  0.025918  0.197318 ...  0.088839  0.336992  0.290796  0.367974 NaN NaN NaN NaN
23  NaN NaN  0.001356  0.723209  0.078923  0.159972  0.094777  0.198491 ...  0.225621  0.059736  0.782560  0.678412 NaN NaN NaN NaN
24  NaN NaN  0.205520  0.019794  0.075210  0.000622  0.119975  0.116428 ...  0.392006  0.460143  0.238348  0.598957 NaN NaN NaN NaN
25  NaN NaN  0.004261  0.003159  0.003675  0.108487  0.344357  0.218113 ...  0.002379  0.126916  0.522164  0.019517 NaN NaN NaN NaN
26  NaN NaN  0.217224  0.052694  0.508061  0.028095  0.244016  0.057007 ...  0.160138  0.285628  0.447312  0.000999 NaN NaN NaN NaN
27  NaN NaN  0.066310  0.149280  0.772441  0.078405  0.200181  0.392209 ...  0.334078  0.029189  0.129492  0.159437 NaN NaN NaN NaN
28  NaN NaN  0.288818  0.679855  0.418685  0.432491  0.185340  0.754593 ...  0.124270  0.288381  0.033000  0.033425 NaN NaN NaN NaN
29  NaN NaN  0.301348  0.286180  0.048910  0.116658  0.331689  0.272144 ...  0.180669  0.050509  0.156428  0.001210 NaN NaN NaN NaN
..   ..  ..       ...       ...       ...       ...       ...       ... ...       ...       ...       ...       ...  ..  ..  ..  ..
432 NaN NaN       NaN       NaN       NaN       NaN       NaN       NaN ...       NaN       NaN       NaN       NaN NaN NaN NaN NaN
433 NaN NaN       NaN       NaN       NaN       NaN       NaN       NaN ...       NaN       NaN       NaN       NaN NaN NaN NaN NaN
434 NaN NaN       NaN       NaN       NaN       NaN       NaN       NaN ...       NaN       NaN       NaN       NaN NaN NaN NaN NaN
435 NaN NaN       NaN       NaN       NaN       NaN       NaN       NaN ...       NaN       NaN       NaN       NaN NaN NaN NaN NaN
436 NaN NaN       NaN       NaN       NaN       NaN       NaN       NaN ...       NaN       NaN       NaN       NaN NaN NaN NaN NaN
437 NaN NaN       NaN       NaN       NaN       NaN       NaN       NaN ...       NaN       NaN       NaN       NaN NaN NaN NaN NaN
438 NaN NaN       NaN       NaN       NaN       NaN       NaN       NaN ...       NaN       NaN       NaN       NaN NaN NaN NaN NaN
439 NaN NaN       NaN       NaN       NaN       NaN       NaN       NaN ...       NaN       NaN       NaN       NaN NaN NaN NaN NaN
440 NaN NaN       NaN       NaN       NaN       NaN       NaN       NaN ...       NaN       NaN       NaN       NaN NaN NaN NaN NaN
441 NaN NaN       NaN       NaN       NaN       NaN       NaN       NaN ...       NaN       NaN       NaN       NaN NaN NaN NaN NaN
442 NaN NaN       NaN       NaN       NaN       NaN       NaN       NaN ...       NaN       NaN       NaN       NaN NaN NaN NaN NaN
443 NaN NaN       NaN       NaN       NaN       NaN       NaN       NaN ...       NaN       NaN       NaN       NaN NaN NaN NaN NaN
444 NaN NaN       NaN       NaN       NaN       NaN       NaN       NaN ...       NaN       NaN       NaN       NaN NaN NaN NaN NaN
445 NaN NaN       NaN       NaN       NaN       NaN       NaN       NaN ...       NaN       NaN       NaN       NaN NaN NaN NaN NaN
446 NaN NaN       NaN       NaN       NaN       NaN       NaN       NaN ...       NaN       NaN       NaN       NaN NaN NaN NaN NaN
447 NaN NaN       NaN       NaN       NaN       NaN       NaN       NaN ...       NaN       NaN       NaN       NaN NaN NaN NaN NaN
448 NaN NaN       NaN       NaN       NaN       NaN       NaN       NaN ...       NaN       NaN       NaN       NaN NaN NaN NaN NaN
449 NaN NaN       NaN       NaN       NaN       NaN       NaN       NaN ...       NaN       NaN       NaN       NaN NaN NaN NaN NaN
450 NaN NaN       NaN       NaN       NaN       NaN       NaN       NaN ...       NaN       NaN       NaN       NaN NaN NaN NaN NaN
451 NaN NaN       NaN       NaN       NaN       NaN       NaN       NaN ...       NaN       NaN       NaN       NaN NaN NaN NaN NaN
452 NaN NaN       NaN       NaN       NaN       NaN       NaN       NaN ...       NaN       NaN       NaN       NaN NaN NaN NaN NaN
453 NaN NaN       NaN       NaN       NaN       NaN       NaN       NaN ...       NaN       NaN       NaN       NaN NaN NaN NaN NaN
454 NaN NaN       NaN       NaN       NaN       NaN       NaN       NaN ...       NaN       NaN       NaN       NaN NaN NaN NaN NaN
455 NaN NaN       NaN       NaN       NaN       NaN       NaN       NaN ...       NaN       NaN       NaN       NaN NaN NaN NaN NaN
456 NaN NaN       NaN       NaN       NaN       NaN       NaN       NaN ...       NaN       NaN       NaN       NaN NaN NaN NaN NaN
457 NaN NaN       NaN       NaN       NaN       NaN       NaN       NaN ...       NaN       NaN       NaN       NaN NaN NaN NaN NaN
458 NaN NaN       NaN       NaN       NaN       NaN       NaN       NaN ...       NaN       NaN       NaN       NaN NaN NaN NaN NaN
459 NaN NaN       NaN       NaN       NaN       NaN       NaN       NaN ...       NaN       NaN       NaN       NaN NaN NaN NaN NaN
460 NaN NaN       NaN       NaN       NaN       NaN       NaN       NaN ...       NaN       NaN       NaN       NaN NaN NaN NaN NaN
461 NaN NaN       NaN       NaN       NaN       NaN       NaN       NaN ...       NaN       NaN       NaN       NaN NaN NaN NaN NaN

[462 rows x 38 columns]
In [17]: df1.iloc[:, 2:].dot(df2.values)
Out[17]: 
            0          1          2          3          4     ...            29        30         31         32        33
0     9.971979   6.981089   8.694962   8.276216   8.351839    ...      8.480659  8.414970   8.240727   9.672677  7.565088
1     9.410364   8.590233   8.195569   9.140421   8.921937    ...      8.570695  7.076403  10.040924   8.267829  8.325542
2    11.095329   9.576891   9.809456  10.026001  10.696129    ...      9.234288  8.387796  11.306832  10.665649  8.983012
3    10.195718   8.550438   9.006633   9.628953   9.156615    ...      8.921587  7.133165  10.254906   9.561331  8.968170
4    10.169194   9.450612   8.424815   8.513062   8.537338    ...      8.358502  8.129391   9.731362   9.567829  8.041028
5     8.699785   7.506038   7.247128   8.637461   7.905982    ...      7.635597  6.348187   8.452615   7.902099  7.091182
6     9.231585   7.692058   7.744410   8.488541   8.450400    ...      7.932535  6.753257   8.688555   8.658745  7.056945
7     9.622983   8.674558   6.987342   8.077567   7.955983    ...      8.264570  6.685770   9.142239   9.154905  7.833893
8    11.309864   9.142239   8.419535   8.680210   9.712205    ...      8.717705  7.664762  10.649243   9.459739  8.912268
9    11.334008   8.958880   8.296706   9.420058   9.756113    ...      9.399543  7.366976  10.139639  10.154981  8.350516
10   11.181974  10.031747   9.294010  11.156024  10.066875    ...      9.613627  8.053175  11.583264  10.818940  9.330073
11    9.980280   8.311433   7.501879   8.494200   7.832875    ...      8.457131  7.320341   9.921714   8.975098  8.443220
12    9.740919   8.728053   7.673338   8.007482   9.291362    ...      8.483178  6.957094   9.554731   8.977761  7.974371
13   11.167700  10.239565  11.016358  11.550972  10.918983    ...      9.373120  9.645397  12.572644  11.505732  9.894803
14   10.680348   8.988366   9.009413   8.823574   9.424792    ...      8.959995  8.185815   9.940674   9.927982  8.334847
15   11.830672  10.053389   9.302099  10.251534   9.440460    ...     10.139816  9.478568  10.860152  11.184854  8.287742
16    9.339399   8.916890   7.187363   8.922513   8.426588    ...      7.944471  7.323630   9.814955   8.656069  7.053032
17   11.143226   8.808918   9.178566   8.847451   9.175966    ...      9.158147  7.899361   9.656798   9.994228  8.879669
18    9.889310   8.284430   7.786766   8.221434   8.435520    ...      7.373773  6.921359   8.685328   9.677998  8.130656
19   11.021434   9.315304   7.878728   9.712656   9.381570    ...      8.506453  7.138838   9.409518  10.872490  8.920906
20    8.465932   7.376756   7.873896   8.216718   7.981726    ...      7.606467  6.071998   8.783477   8.713840  6.978514
21   10.044225   8.490197   7.624420   8.063905   8.485409    ...      8.590962  6.953432  10.188383   8.691053  7.867377
22   10.055971   8.596160   8.004438   8.487240   8.243792    ...      8.232528  6.805463   9.322255  10.063531  7.578448
23   11.260788  10.345866   8.547624   9.151512   9.672593    ...      8.784488  8.244342  10.440683  11.396178  9.597543
24   11.289788   9.181376   9.678903   9.205845  10.020440    ...      9.945561  8.558815  10.285292  10.364807  8.624407
25    9.735467   7.731079   7.858442   8.098820   7.329694    ...      8.992903  7.179417   8.045042   8.872422  7.592073
26    8.951750   7.260067   8.087883   8.625076   7.796546    ...      8.368493  6.549368   8.282185   8.082291  7.088356
27    8.493655   7.288378   7.554746   7.793805   7.555760    ...      7.146606  5.828258   7.744346   8.613483  7.455887
28    9.915362   8.161043   9.110862   9.147840   8.513224    ...      8.676128  7.878927   8.752682  10.031502  8.360679
29   11.225115   8.611056   9.385648   9.472114   9.581927    ...      8.964314  8.321400  10.043396  10.177277  8.422191
..         ...        ...        ...        ...        ...    ...           ...       ...        ...        ...       ...
432   7.627470   5.734383   6.626045   6.156603   7.429465    ...      6.461749  5.636417   6.518002   6.925516  5.183975
433  11.643077  10.056751   9.313494  10.320367   9.455274    ...      9.992466  8.058518  11.759124  11.398521  9.627579
434   9.011228   8.956598   7.391039   8.274706   8.709996    ...      7.739301  7.270689   8.638466   8.497952  7.203451
435   9.265928   7.693394   8.228558   7.400204   8.619893    ...      7.547710  7.003936   8.839432   9.568429  7.334440
436   9.920282   9.012674   8.142472   9.055654   9.253443    ...      8.413467  6.989122   8.762788   9.328164  7.850035
437   9.944510   7.895858   7.797087   8.212704   8.687516    ...      8.068419  6.169651   8.120617   9.299318  6.777742
438  10.494847   8.672840   9.410736   9.288373   9.146171    ...      9.597911  7.760452  10.141617  10.452433  9.498194
439   9.867494   8.142811   8.214623   8.060762   9.040205    ...      8.427159  7.106905  10.524450   9.292304  8.472231
440  10.130309   8.778968   8.098571   9.036090   9.253507    ...      8.885713  7.310063  10.105144   9.545208  8.807030
441  10.251218   7.729740   7.370521   8.384513   6.958638    ...      8.240842  6.977351   9.267558   9.143776  7.798779
442   8.748951   7.197680   7.028517   7.348912   7.809581    ...      7.896705  6.635679   6.819049   8.045874  6.039097
443  11.703053   9.065089   8.927836   9.542447   9.241294    ...      9.779255  8.794765  10.497803   9.763386  8.408181
444  11.433442  10.707882  10.134235  11.019976  10.722692    ...      9.853438  8.556864  11.099727  11.881496  9.348087
445   8.794981   7.614707   7.855584   8.671275   7.436318    ...      7.282331  6.869884   8.410838   8.980563  7.358201
446   8.735594   7.520451   7.336556   8.235567   7.554697    ...      6.827973  6.302846   8.694671   7.736256  7.746888
447   8.930933   7.674217   7.478743   8.077684   7.300099    ...      7.524244  6.481388   9.119867   8.043605  6.514627
448   9.701053   7.237276   8.207318   8.704792   8.145399    ...      8.176370  7.334896   7.827332   9.504545  8.012765
449   9.932439   8.175081   7.803909   9.206564   9.782949    ...      9.125961  7.279960   8.518182   9.648755  7.742197
450   9.365815   8.567567   7.579989   8.670692   9.055934    ...      7.980583  6.721377   9.921531   9.309550  8.125973
451   9.075117   8.108147   8.607631   8.185085   7.895500    ...      8.036308  6.766023   9.057757   9.009128  7.459431
452   9.059566   8.659570   7.626333   9.360041   8.226206    ...      7.634966  7.739625   8.960765   8.781221  7.528786
453   8.432637   7.678105   7.610083   7.640916   8.305286    ...      6.888020  6.553264   8.646732   8.628493  7.721341
454   9.055456   7.311839   7.413838   7.267197   7.253457    ...      7.585661  7.061526   8.355587   8.697914  7.646652
455   9.516074   8.071045   8.149921   9.263839   8.287315    ...      7.421049  6.959464   9.453780   9.958168  8.350330
456  10.070524   8.916685   9.093280   9.447184   9.086083    ...      9.234514  7.800037  10.031802   9.686283  9.196937
457  10.726476   8.270430   7.704192   8.026725   9.541432    ...      8.338713  6.688143   8.785184  10.426090  8.658769
458   9.751500   7.310215   8.136909   8.312466   7.316233    ...      7.874102  7.796568   9.434560   7.996315  8.094219
459   9.501868   8.039517   7.932875   8.385449   8.937402    ...      8.569393  6.948936   7.823537   9.030505  7.035568
460   9.476510   7.735094   7.266457   9.046955   8.358792    ...      8.635297  7.403172   8.382819   8.930228  6.963464
461  10.638806   9.091559   8.946520   9.440301  10.823085    ...      8.734041  7.767178   9.745443   9.859176  8.198679

[462 rows x 34 columns]
这是可行的,但有很多价值观。这是因为
.mul
执行数据帧的元素乘法,并期望数据帧的形状为
(A,B)x(A,B)

使用df2.values时,我们可以重现您的错误,因为pandas试图从
(36,34)
df2.values numpy数组中创建
(462,36)
数据帧,但失败:

In [13]: df1.iloc[:, 2:].mul(df2.values, axis=0)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-13-e33efa65ac07> in <module>()
----> 1 df1.iloc[:, 2:].mul(df2.values, axis=0)

~/miniconda3/envs/so_question/lib/python3.6/site-packages/pandas/core/ops.py in f(self, other, axis, level, fill_value)
   1515     def f(self, other, axis=default_axis, level=None, fill_value=None):
   1516 
-> 1517         other = _align_method_FRAME(self, other, axis)
   1518 
   1519         if isinstance(other, ABCDataFrame):  # Another DataFrame

~/miniconda3/envs/so_question/lib/python3.6/site-packages/pandas/core/ops.py in _align_method_FRAME(left, right, axis)
   1438                                  "must be {req_shape}: given {given_shape}"
   1439                                  .format(req_shape=left.shape,
-> 1440                                          given_shape=right.shape))
   1441 
   1442             right = left._constructor(right, index=left.index,

ValueError: Unable to coerce to DataFrame, shape must be (462, 36): given (36, 34)

矩阵乘法的相同规则适用于数据帧。您的形状必须是(M,N)x(N,P)什么是
df_binary.iloc[:,2:]。
?(462,36)是有效的大小。我无法用随机生成的数据帧重现您的问题。嗯。。。可能是类型问题?我在我的数据上运行它,虽然它不会产生任何错误,但它给我的值是“0000100001100000”,而不是一个数字,如“10”。有什么想法吗?你能添加一个最小的,[完整且可验证的例子]()来重现你的问题吗?查看我的