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)”
我可以将返回元组存储在临时列中并将其拆分,但我想知道是否有任何方法可以将结果拆分为列?
添加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)