如何将多列乘以另一列pandas

时间:2017-10-16 20:14:59

标签: python pandas

我有一个100列的数据框,我希望将一列(' Count')值乘以6到74之间的列位置。请告诉我该怎么做。我一直在尝试

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

他们都没有工作

结果Dataframe应为100列,所有原始列的列号为6到74,其中所有行都有相乘的值。

5 个答案:

答案 0 :(得分:4)

假设@MaxU提供相同的数据帧

不容易,但是关于如何使用其他api元素的观点 pd.DataFrame.updatepd.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

答案 1 :(得分:3)

演示:

样本DF:

3-6

让我们将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

<?php

namespace App\Http\Controllers\Controller;

答案 2 :(得分:3)

这里最简单的方法是提取值,乘以,然后分配。

u = df.iloc[0, 6:74].values
v = df[['count']]

df = pd.DataFrame(u * v)

答案 3 :(得分:3)

使用combine_first

df.iloc[:, 3:6+1].mul(df['Count'],axis=0).combine_first(df)

答案 4 :(得分:0)

您需要将通过乘法运算得到的数据帧与其余列进行连接:

df=pd.concat( [df.iloc[0:6],df.iloc[75:],df.iloc[:,6:74+1].multiply(df['Count'],axis=0)]  , axis=1)