【问题标题】:Multiplying specific columns of dataframe by constant scalar value将数据帧的特定列乘以常数标量值
【发布时间】:2016-01-29 21:20:35
【问题描述】:

如何仅将数据帧的特定列乘以常数值?

df0 = pd.DataFrame({'A' : 1.,
                    'B' : 1,
                    'C' : 1,
                    'D' : np.array([1] * 4,dtype='int32')})

mult_by_two = df0.iloc[:,2:].mul(2)
print mult_by_two

我明白了:

   C  D
0  2  2
1  2  2
2  2  2
3  2  2

但我想要的是这个:

   A  B  C  D
0  1  1  2  2
1  1  1  2  2
2  1  1  2  2
3  1  1  2  2

【问题讨论】:

    标签: python pandas dataframe multiplication


    【解决方案1】:

    您可以将结果分配给df0

    >>> df0.iloc[:,2:] = df0.iloc[:,2:].mul(2)
    >>> df0
    
       A  B  C  D
    0  1  1  2  2
    1  1  1  2  2
    2  1  1  2  2
    3  1  1  2  2
    

    如果您想要一份副本,请在分配之前制作:

    df1 = df0.copy()
    df1.iloc[:,2:] = df1.iloc[:,2:].mul(2)
    

    【讨论】:

      【解决方案2】:

      如果您需要在标量上进行乘法运算,则无需调用 mul 方法,您可以使用通常的 * 运算符:

      In [24]: df0.iloc[:,2:] * 2
      Out[24]: 
         C  D
      0  2  2
      1  2  2
      2  2  2
      3  2  2
      

      对于您的问题,您可以将pd.concat 与您的第一列和要相乘的列一起使用:

      In [25]: pd.concat([df0.iloc[:,:2], df0.iloc[:,2:] * 2], axis=1)
      Out[25]: 
         A  B  C  D
      0  1  1  2  2
      1  1  1  2  2
      2  1  1  2  2
      3  1  1  2  2
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-03-10
        • 1970-01-01
        • 2019-06-29
        • 2018-04-12
        • 1970-01-01
        • 2020-02-27
        相关资源
        最近更新 更多