0

So I have two dataframes, one of size (462, 38) and the other (36, 34). Theoretically, I should be able to multiply them (the first one without the first two columns, making it (462,36)) and get a matrix of the size (462,34), but I'm receiving an error. This is the script I'm using:

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

df_binary is the dataframe of size (462,38) df_pim is the dataframe of size (36,34)

I'm getting this error:

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

Pretty new to pandas, but a little confused on why this isn't working.

beflyguy
  • 135
  • 2
  • 10

1 Answers1

0

Let's create a little toy example:

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)

Let's try .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]

This works but there are lots of NaN values. This is because .mul does element-wise multiplication of DataFrames and expects the shapes of the DataFrames to be (A, B) x (A, B).

We can reproduce your error when using df2.values because pandas tries to create a (462, 36) DataFrame out of the (36, 34) df2.values numpy array and fails:

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)

Judging from your description you meant to use .dot which is for matrix multiplication (M, N) x (N, P) = (M, P) instead of .mul:

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]
tobsecret
  • 2,442
  • 15
  • 26
  • I'm running this on my data and although it doesn't produce any errors, it gives me values like "000010000011100000" rather than a single number, like "10". Any thoughts on why? – beflyguy Jul 16 '18 at 15:50
  • Can you add a minimal, [complete and verifiable example] (https://stackoverflow.com/help/mcve) that reproduces your problem, please? Check out my [favorite stackoverflow answer on how to do that with pandas](https://stackoverflow.com/a/32536193/7480990) – tobsecret Jul 16 '18 at 17:59