使用df.apply()方法将单个元组项分配给多个数据帧列?

时间:2017-09-26 18:07:44

标签: python python-3.x function pandas dataframe

我有一个包含两列AB的数据框,以及一个用户定义的函数,它根据A中的值执行两次计算,并返回一个包含两个项目的元组{ {1}}和output1

output2

我想要做的是将df = pd.DataFrame({'A':[1,2,3,4,5],'B':[5,4,3,2,1]}) def myfunc(row): selected_row = row['A'] output1 = selected_row + 10 output2 = selected_row + 20 return (output1, output2) output1的值分配给两个单独的数据框列output2C。我到目前为止能够将整个返回的元组(包含两个项目)分配给一个signle列:

D

我希望能够针对两个不同的列执行此操作,df['C'] = df.apply(myfunc,axis=1) 转到列output1C转到列output2;我想象这样的事情:

D

非常感谢任何帮助或建议。

1 个答案:

答案 0 :(得分:0)

myfunc是否会执行任何实际需要两列的内容?在你的例子中没有,所以你实际上不需要使用apply(可能不想,因为它很慢)。

您可以改为使用df.assign

df.assign(C=lambda x: x.A + 10, D=lambda x: x.B + 20)