【问题标题】:Pandas DataFrame multiplying columns and creating new columnsPandas DataFrame 乘以列并创建新列
【发布时间】:2017-03-03 19:27:51
【问题描述】:

我有一些包含 11 列的数据。我需要将第 1-10 列乘以第 11 列,然后用这些结果创建 10 个新列。为此,我正在使用 pandas DataFrame。

现在我明白了如何使用这样的代码为每一列单独执行此操作

df['newcolumn1'] = df['column1']*df['column11']
df['newcolumn2'] = df['column2']*df['column11']
df['newcolumn3'] = df['column3']*df['column11']

我假设我可以设置一个函数和一个循环来遍历列并创建新列。无论如何我可以通过引用列索引号而不是列名来做到这一点。

【问题讨论】:

    标签: python python-3.x pandas dataframe


    【解决方案1】:

    您可以使用multiply 生成新列的DataFrame,然后使用pd.concat 将它们连接在一起,而不是单独相乘或显式循环。按您希望的列号这样做可能看起来像

    pd.concat([df, 
               (df.iloc[:, :10].multiply(df.iloc[:, -1], axis='rows')
                               .add_prefix('new_'))], 
               axis=1)
    

    小例子

    >>> df
       column1  column2  column3  column4
    0        0        1        2        3
    1        4        5        6        7
    2        8        9       10       11
    3       12       13       14       15
    
    >>> pd.concat([df, 
                    (df.iloc[:, :3].multiply(df.iloc[:, -1], axis='rows')
                                   .add_prefix('new_')], axis=1))], 
                    axis=1)
    
       column1  column2  column3  column4  new_column1  new_column2  new_column3
    0        0        1        2        3            0            3            6
    1        4        5        6        7           28           35           42
    2        8        9       10       11           88           99          110
    3       12       13       14       15          180          195          210
    

    【讨论】:

      猜你喜欢
      • 2021-12-30
      • 2021-01-21
      • 1970-01-01
      • 2022-09-30
      • 2019-02-17
      • 2021-04-15
      • 2021-10-09
      • 2021-04-14
      • 2016-02-10
      相关资源
      最近更新 更多