【问题标题】:Pandas : Create multiple new variables by applying function to dataframePandas:通过将函数应用于数据框来创建多个新变量
【发布时间】:2022-08-13 23:35:20
【问题描述】:

考虑以下简单函数:

def Powers(x):
    return [x, x**2, x**3, x**4, x**5]

和输入数据框:

df = pd.DataFrame({ \'x\':(1, 2, 3, 4, 5) })

我想生成新变量:[\'Exp_1\', \'Exp_2\', \'Exp_3\', \'Exp_4\', \'Exp_5\']

当我将函数应用于数据框时,如下所示:

df[[\'Exp_1\', \'Exp_2\', \'Exp_3\', \'Exp_4\', \'Exp_5\']] = df.apply(lambda x: Powers(x.x), axis=1)

我得到:

换句话说,这些值被转置了。也就是说,1 的第 5 个指数是 1 而不是 5,5 的第一个指数是 5 而不是 1。

我在上面的电话中尝试过axis=0,但这也不起作用。我也知道我有问题,因为如果输入数据帧的长度不同,我会出错。

我该如何解决?

    标签: python pandas


    【解决方案1】:

    您可以在Powers 函数中返回系列

    def Powers(x):
        return pd.Series([x, x**2, x**3, x**4, x**5])
    
    df[['Exp_1', 'Exp_2', 'Exp_3', 'Exp_4', 'Exp_5']] = df.apply(lambda x: Powers(x.x), axis=1)
    
    print(df)
    
       x  Exp_1  Exp_2  Exp_3  Exp_4  Exp_5
    0  1      1      1      1      1      1
    1  2      2      4      8     16     32
    2  3      3      9     27     81    243
    3  4      4     16     64    256   1024
    4  5      5     25    125    625   3125
    

    【讨论】:

      猜你喜欢
      • 2022-01-07
      • 2017-03-14
      • 2016-06-15
      • 2017-06-17
      • 1970-01-01
      • 2021-11-08
      • 1970-01-01
      • 2019-09-18
      • 1970-01-01
      相关资源
      最近更新 更多