【问题标题】:Pandas Multiply Columns Using Conditional Column NamesPandas 使用条件列名乘以列
【发布时间】:2022-08-19 00:26:36
【问题描述】:

我试图根据以字符串开头的列名简单地将单个 DF 中的列相乘。如果一列包含该“字符串”值,则这些列中的值将乘以不同列中的值(列 = Avg_Adj_Prod)。这是我的数据示例:

df:
      site     month     Adj1    Adj2    Adj3    Adj4    Adj5    Avg_Adj_Prod   
0     West1    8         45      52      36      21      19      0.95
1     West1    9         21      17      34      23      33      0.82
2     East3    8         17      16      53      21      19      1.45
3     East3    9         38      41      44      51      62      1.05

最终df:

      site     month     Adj1    Adj2    Adj3    Adj4    Adj5    
0     West1    8         42.75   49.4    34.2    19.95   18.05      
1     West1    9         17.22   13.94   33.18   18.86   27.06      
2     East3    8         24.65   23.2    76.85   30.45   27.55      
3     East3    9         39.9    43.05   46.2    53.55   65.1 

 

一些将启动该过程的代码:

df.loc[:,df.columns.str.contains(\'Adj\')] = ? 

谢谢你,

    标签: pandas if-statement conditional-statements multiple-columns


    【解决方案1】:

    使用filter 获取以“Avg”开头的列,然后使用mul 和update:

    df.update(df.filter(regex='^Adj').mul(df['Avg_Adj_Prod'], axis=0))
    

    修改df:

        site  month   Adj1   Adj2   Adj3   Adj4   Adj5  Avg_Adj_Prod
    0  West1      8  42.75  49.40  34.20  19.95  18.05          0.95
    1  West1      9  17.22  13.94  27.88  18.86  27.06          0.82
    2  East3      8  24.65  23.20  76.85  30.45  27.55          1.45
    3  East3      9  39.90  43.05  46.20  53.55  65.10          1.05
    

    【讨论】:

      猜你喜欢
      • 2016-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-20
      • 2023-01-23
      • 2022-09-30
      • 2018-12-05
      相关资源
      最近更新 更多