Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to multiply multiple columns by another column pandas

Tags:

python

pandas

I have a Dataframe of 100 Columns and I want to multiply one column ('Count') value with the columns position ranging from 6 to 74. Please tell me how to do that. I have been trying

df = df.ix[0, 6:74].multiply(df["Count"], axis="index")
df = df[df.columns[6:74]]*df["Count"]

None of them is working

The result Dataframe should be of 100 columns with all original columns where columns number 6 to 74 have the multiplied values in all the rows.

like image 347
Jiayang Zhuo Avatar asked Oct 16 '17 20:10

Jiayang Zhuo


People also ask

Can you multiply two columns in pandas?

Multiplying columns together is a foundational skill in Pandas and a great one to master. Good thing it is straightforward and easy to pick up. In the video below we'll review two methods for multiplying columns together and saving the result on your dataframe.

How do I multiply Panda DataFrame?

Pandas DataFrame mul() MethodThe mul() method multiplies each value in the DataFrame with a specified value. The specified value must be an object that can be multiplied with the values of the DataFrame.

How do you multiply series in pandas?

Multiplying of two pandas. Series objects can be done through applying the multiplication operator “*” as well. Through mul() method, handling None values in the data is possible by replacing them with a default value using the parameter fill_value.

Does pandas do matrix multiplication?

Overview: The dot() method of pandas DataFrame class does a matrix multiplication between a DataFrame and another DataFrame, a pandas Series or a Python sequence and returns the resultant matrix.


2 Answers

Assuming the same dataframe provided by @MaxU

Not easier, but a perspective on how to use other api elements.
pd.DataFrame.update and pd.DataFrame.mul

df.update(df.iloc[:, 3:7].mul(df.Count, 0))
df

    0   1   2          3          4          5          6   7   8   9     Count
0  89  38  89  15.366436   1.355862   7.231264   4.971494  12  70  69  0.225977
1  49   1  38   1.004190   1.095480   2.829990   0.273870  57  93  64  0.030430
2   2  53  49  49.749460  50.379200  54.157640  16.373240  22  31  41  0.629740
3  38  44  23  28.437516  73.545300  41.185368  73.545300  19  99  57  0.980604
4  45   2  60  10.093230   4.773825  10.502415   6.274170  43  63  55  0.136395
5  65  97  15  10.375760  57.066680  38.260615  14.915155  68   5  21  0.648485
6  95  90  45  52.776000  16.888320  22.517760  50.664960  76  32  75  0.703680
7  60  31  65  63.242210   2.976104  26.784936  38.689352  72  73  94  0.744026
8  64  96  96   7.505370  37.526850  11.007876  10.007160  68  56  39  0.500358
9  78  54  74   8.409275  25.227825  16.528575   9.569175  97  63  37  0.289975
like image 193
piRSquared Avatar answered Oct 21 '22 11:10

piRSquared


Demo:

Sample DF:

In [6]: df = pd.DataFrame(np.random.randint(100,size=(10,10))) \
               .assign(Count=np.random.rand(10))

In [7]: df
Out[7]:
    0   1   2   3   4   5   6   7   8   9     Count
0  89  38  89  68   6  32  22  12  70  69  0.225977
1  49   1  38  33  36  93   9  57  93  64  0.030430
2   2  53  49  79  80  86  26  22  31  41  0.629740
3  38  44  23  29  75  42  75  19  99  57  0.980604
4  45   2  60  74  35  77  46  43  63  55  0.136395
5  65  97  15  16  88  59  23  68   5  21  0.648485
6  95  90  45  75  24  32  72  76  32  75  0.703680
7  60  31  65  85   4  36  52  72  73  94  0.744026
8  64  96  96  15  75  22  20  68  56  39  0.500358
9  78  54  74  29  87  57  33  97  63  37  0.289975

Let's multiply columns 3-6 by df['Count']:

In [8]: df.iloc[:, 3:6+1]
Out[8]:
    3   4   5   6
0  68   6  32  22
1  33  36  93   9
2  79  80  86  26
3  29  75  42  75
4  74  35  77  46
5  16  88  59  23
6  75  24  32  72
7  85   4  36  52
8  15  75  22  20
9  29  87  57  33

In [9]: df.iloc[:, 3:6+1] *= df['Count']

In [10]: df
Out[10]:
    0   1   2          3          4          5          6   7   8   9     Count
0  89  38  89  66.681065   0.818372  20.751519  15.480964  12  70  69  0.225977
1  49   1  38  32.359929   4.910233  60.309102   6.333122  57  93  64  0.030430
2   2  53  49  77.467708  10.911630  55.769707  18.295685  22  31  41  0.629740
3  38  44  23  28.437513  10.229653  27.236368  52.776014  19  99  57  0.980604
4  45   2  60  72.564688   4.773838  49.933342  32.369289  43  63  55  0.136395
5  65  97  15  15.689662  12.002793  38.260613  16.184644  68   5  21  0.648485
6  95  90  45  73.545292   3.273489  20.751519  50.664974  76  32  75  0.703680
7  60  31  65  83.351331   0.545581  23.345459  36.591370  72  73  94  0.744026
8  64  96  96  14.709058  10.229653  14.266669  14.073604  68  56  39  0.500358
9  78  54  74  28.437513  11.866397  36.963643  23.221446  97  63  37  0.289975
like image 27
MaxU - stop WAR against UA Avatar answered Oct 21 '22 10:10

MaxU - stop WAR against UA