Pandas 应用 lambda 返回一个元组并插入到相应的列中

Rev*_*eer 5 python pandas

pandas 如何应用返回一个元组,并将其结果插入到相应的列中?

def foo(n, m):
    a = n + 1
    b = m + 2
    return a, b

df['a'], df['b'] = df.apply(lambda x: foo(x['n'], x['m']), axis=1)
Run Code Online (Sandbox Code Playgroud)

lambda函数中的n和m分别是要抓取值的列。这意味着我想从 foo 返回结果并插入到 a 和 b 列中。

但我收到的错误消息是“解压的值太多(预期为 2)”

我可以将返回元组存储在临时列中并将其拆分,但我想知道是否有任何方法可以将结果拆分为列?

jez*_*ael 2

添加result_type='expand'DataFrame.apply分配给列表中的列子集:

df = pd.DataFrame({'n':[1,2], 'm':[5,6]})

def foo(n, m):
    a = n + 1
    b = m + 2
    return a, b

df[['a','b']] = df.apply(lambda x: foo(x['n'], x['m']), axis=1, result_type='expand')
print (df)
   n  m  a  b
0  1  5  2  7
1  2  6  3  8
    
Run Code Online (Sandbox Code Playgroud)