【问题标题】:Adding multiple columns of unique calculated values to a pandas dataframe将多列唯一计算值添加到熊猫数据框中
【发布时间】:2017-08-24 03:05:32
【问题描述】:

我想使用原始数据框中的函数和值向数据框添加新列

创建数据框

df = pd.DataFrame({'f1'   : np.random.randn(10), 
                   'f2'   : np.random.randn(10),
                   'f3'   : np.random.randn(10),
                   'f4'   : np.random.randn(10),
                   'f5'   : np.random.randn(10)})

要应用于现有列的测试函数

def testfun(x,n):
    return x * n

函数的参数 - 每个新列都有不同的参数

colnum   = [1,2,3,4,5]

为要添加到数据框的新列创建新列名称

newcol         = [s + "_D" for s in df.columns]

循环应用该列的函数和适当参数的现有列。每个新列都将被分配一个唯一的名称。

这部分功能不起作用!

for s in range(len(df.columns)):    
     df       = df.assign(newcol[s] = testfun(df[[df.columns[s]]], s))

新的数据框应该包含 10 列。

【问题讨论】:

    标签: python pandas dataframe assign


    【解决方案1】:

    你可以试试这个

    import pandas as pd
    import numpy as np
    
    df = pd.DataFrame({'f1'   : np.random.randn(10), 
                       'f2'   : np.random.randn(10),
                       'f3'   : np.random.randn(10),
                       'f4'   : np.random.randn(10),
                       'f5'   : np.random.randn(10)})
    
    def testfun(x,n):
        return x * n
    
    colnum = [1,2,3,4,5]
    newcol = [s + "_D" for s in df.columns]
    for s in range(len(df.columns)):    
        df.loc[:,newcol[s]] = df[[df.columns[s]]]*s
    

    【讨论】:

      【解决方案2】:

      IIUC

      df.join(df.mul([1, 2, 3, 4, 5]).add_suffix('_D'))
      
               f1        f2        f3        f4        f5      f1_D      f2_D      f3_D      f4_D      f5_D
      0 -1.036309  0.094285  1.296874  1.154490  0.034166 -1.036309  0.188570  3.890622  4.617961  0.170830
      1 -1.015998  0.180154 -0.332444  2.007173 -0.807009 -1.015998  0.360308 -0.997331  8.028691 -4.035047
      2  0.125456 -0.758892 -0.028901 -2.053950  0.665908  0.125456 -1.517783 -0.086704 -8.215801  3.329542
      3 -1.097128  1.455765 -0.336339  1.076013  0.714174 -1.097128  2.911530 -1.009017  4.304054  3.570869
      4 -0.314902 -1.148362 -0.123719 -0.055161  0.436508 -0.314902 -2.296724 -0.371157 -0.220642  2.182539
      5  0.718147 -0.029205 -0.649937 -1.046908 -0.965463  0.718147 -0.058410 -1.949812 -4.187633 -4.827316
      6  0.454862  0.218846 -0.185591 -0.105686 -1.459477  0.454862  0.437693 -0.556774 -0.422745 -7.297384
      7  0.613794 -2.635875 -0.083078  1.180391 -0.256504  0.613794 -5.271751 -0.249233  4.721563 -1.282521
      8  0.283366  0.256394 -0.222937  1.171640  0.351768  0.283366  0.512789 -0.668811  4.686561  1.758840
      9  0.653707 -0.336425  0.328433 -0.460891 -0.631990  0.653707 -0.672851  0.985298 -1.843564 -3.159948
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-09-04
        • 1970-01-01
        • 2021-03-17
        • 1970-01-01
        • 2017-09-29
        • 2017-08-21
        相关资源
        最近更新 更多