# Multiply observations in one column by every other columns in Python

If I have many columns, how would I multiply the observations in every column by their corresponding probabilities (stored in the probability column)?

If I wanted to do just one column, I could do

``````df['new'] = df['0'] * df['probability']
``````

but I want to do this with many columns and keep the resulting answers (whether replace old observations with these or store answers in new data frame).

My thought was to use apply…like

``````df_t.assign(new_df = lambda df: df.apply(max * df.x, axis=1, raw=False, result_type=None))
``````

but this doesn’t quite get me there (or work), and I’m not sure how to get there. Df.x would stand in for any column.

``````df = pd.DataFrame([[1.5, 2.3, .4], [5.6, 2.4,  .2], [5,  4,  .2]], columns=['0', '1', 'probability'])
``````

### >Solution :

We could multiply with `mul` on axis:

``````cols = df.columns.drop('probability')
df[cols] = df[cols].mul(df['probability'], axis=0)
``````

Output:

``````      0     1  probability
0  0.60  0.92          0.4
1  1.12  0.48          0.2
2  1.00  0.80          0.2
``````