我有一个包含两列A
和B
的数据框,以及一个用户定义的函数,它根据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
的值分配给两个单独的数据框列output2
和C
。我到目前为止能够将整个返回的元组(包含两个项目)分配给一个signle列:
D
我希望能够针对两个不同的列执行此操作,df['C'] = df.apply(myfunc,axis=1)
转到列output1
而C
转到列output2
;我想象这样的事情:
D
非常感谢任何帮助或建议。
答案 0 :(得分:0)
myfunc
是否会执行任何实际需要两列的内容?在你的例子中没有,所以你实际上不需要使用apply(可能不想,因为它很慢)。
您可以改为使用df.assign
:
df.assign(C=lambda x: x.A + 10, D=lambda x: x.B + 20)