这段pandas代码运行正常:
mydict = [{'a': 1, 'b': 2, 'c': 3, 'd': 4},
{'a': 100, 'b': 200, 'c': 300, 'd': 400},
{'a': 1000, 'b': 2000, 'c': 3000, 'd': 4000 }]
df = pd.DataFrame(mydict)
def exec_func(dfx):
x, y = dfx['a'] + 1, dfx['b'] + 1
return x
df['e'] = df.apply(exec_func, axis=1)
print(df)
a b c d e
0 1 2 3 4 2
1 100 200 300 400 101
2 1000 2000 3000 4000 1001
但是,如果我想返回两个值并更新两个列,它会抛出一个错误:
def exec_func(dfx):
x, y = dfx['a'] + 1, dfx['b'] + 1
return x, y
df[['e', 'f']] = df.apply(exec_func, axis=1)
抛出:ValueError: Columns must be same length as key
如何解决这个问题?注意,我需要使用apply
如果您绝对需要使用apply
,您可以将返回值作为一个系列(但尝试使用@BENY的答案):
def exec_func(dfx):
x, y = dfx['a'] + 1, dfx['b'] + 1
return pd.Series([x, y])
df[["e", "f"]] = df.apply(exec_func, axis=1)
输出:
a b c d e f
0 1 2 3 4 2 3
1 100 200 300 400 101 201
2 1000 2000 3000 4000 1001 2001