"列的长度必须与键相同"尝试在熊猫中填充两列

  • 本文关键字:熊猫 填充 两列 python pandas
  • 更新时间 :
  • 英文 :


这段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

最新更新