使用Apply将2个新列添加到现有数据框

Dav*_*d 8 14 python apply dataframe pandas

我想使用apply函数:-以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)
Run Code Online (Sandbox Code Playgroud)

理想结果:

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

Run Code Online (Sandbox Code Playgroud)

ank*_*_91 13

您可以添加result_type='expand'apply

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

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

或调用数据框构造函数:

df[['add', 'multiply']]=pd.DataFrame(df.apply(lambda x: add_multiply(x['col1'], 
                                    x['col2']), axis=1).tolist())
Run Code Online (Sandbox Code Playgroud)
   col1  col2  add  multiply
0     1     3    4         3
1     2     4    6         8
Run Code Online (Sandbox Code Playgroud)


Mar*_*ang 7

anky_91的答案突出了中的一个有用选项apply

但是,对于这种特殊情况,apply甚至不需要

df['add'], df['multiply'] = add_multiply(df['col1'],df['col2'])
Run Code Online (Sandbox Code Playgroud)