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

时间:2019-08-25 13:20:23

标签: python pandas dataframe apply

我想使用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)

理想结果:

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

2 个答案:

答案 0 :(得分:13)

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

  

“扩展”:类似列表的结果将变成列。

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

答案 1 :(得分:7)

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

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

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