【问题标题】:Add 2 new columns to existing dataframe using apply使用 apply 向现有数据框添加 2 个新列
【发布时间】:2019-12-29 23:09:26
【问题描述】:

我想使用以下应用功能: - 将 2 列作为输入 - 基于函数输出两个新列。

这个 add_multiply 函数就是一个例子。

#function with 2 column inputs and 2 outputs
def add_multiply (a,b):
  return (a+b, a*b )

#example dataframe
df = pd.DataFrame({'col1': [1, 2], 'col2': [3, 4]})

#this doesn't work
df[['add', 'multiply']] = df.apply(lambda x: add_multiply(x['col1'], x['col2']), axis=1)

理想结果:

col1  col2  add  multiply
1     3     4    3
2     4     6    8

【问题讨论】:

    标签: python pandas dataframe apply


    【解决方案1】:

    您可以在apply中添加result_type='expand'

    ‘expand’ : 类似列表的结果将变成列。

    df[['add', 'multiply']]=df.apply(lambda x: add_multiply(x['col1'], x['col2']),axis=1,
                                 result_type='expand')
    

    或者调用数据框构造函数:

    df[['add', 'multiply']]=pd.DataFrame(df.apply(lambda x: add_multiply(x['col1'], 
                                        x['col2']), axis=1).tolist())
    

       col1  col2  add  multiply
    0     1     3    4         3
    1     2     4    6         8
    

    【讨论】:

      【解决方案2】:

      anky_91 的回答突出显示了apply 中的一个有用选项。

      然而,对于这种特殊情况,apply 甚至不是必需的,

      df['add'], df['multiply'] = add_multiply(df['col1'],df['col2'])
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-19
        • 1970-01-01
        • 2022-01-03
        • 2018-10-09
        • 2018-09-03
        相关资源
        最近更新 更多