Python 向dataframe添加多个列

Python 向dataframe添加多个列,python,pandas,dataframe,apply,Python,Pandas,Dataframe,Apply,下面的Python代码运行良好 import pandas as pd df = pd.DataFrame(data = {'a': [1, 2, 3], 'b': [4, 5, 6]}) def myfun(a, b): return [a + b, a - b] df[['x', 'y']] = df.apply( lambda row: myfun(row.a, row.b), axis=1) 生成的数据帧如下所示: print(df) a b x y 0

下面的Python代码运行良好

import pandas as pd

df = pd.DataFrame(data = {'a': [1, 2, 3], 'b': [4, 5, 6]})

def myfun(a, b):
  return [a + b, a - b]

df[['x', 'y']] = df.apply(
    lambda row: myfun(row.a, row.b), axis=1)
生成的数据帧如下所示:

print(df)

   a  b  x  y
0  1  4  5 -3
1  2  5  7 -3
2  3  6  9 -3
但是,如果我尝试再添加两列

df[['xx','yy']] = df.apply(lambda row: myfun(row.a, row.b), axis=1)
我收到了错误信息

KeyError: "['xx' 'yy'] not in index"
为什么?正确的方法是什么

非常感谢


//A

需要将返回输出转换为
系列

def myfun(a, b):
  return pd.Series([a + b, a - b])

df[['x', 'y']] = df.apply(
    lambda row: myfun(row.a, row.b), axis=1)
print (df)
   a  b  x  y
0  1  4  5 -3
1  2  5  7 -3
2  3  6  9 -3

您可以指定给系列的元组:

df['xx'], df['yy'] = df.apply(lambda row: myfun(row.a, row.b), axis=1)
但这与直接赋值相比效率很低:不要使用
pd.DataFrame.apply
,除非您必须这样做,否则这只是一个花哨的循环

df['xx'] = df['a'] + df['b']
df['yy'] = df['a'] - df['b']