Python 使用带有两个参数的函数从两个现有列创建两个新列

Python 使用带有两个参数的函数从两个现有列创建两个新列,python,pandas,dataframe,Python,Pandas,Dataframe,我也有类似的问题,但这个答案不能解决我的问题 . 我有一个函数,它接受两个参数并在float中返回两个不同的值原始数据帧也在float def FunctionName (a, b): some calculations--- return x, y 我有df,我想使用functionFunctionName,这样我将从现有的系列df['A],df['B] df['A], df['B] df['A_new'], df['B_new'] = df[['A'], df['B']].ap

我也有类似的问题,但这个答案不能解决我的问题 . 我有一个函数,它接受两个参数并在
float
中返回两个不同的值原始数据帧也在
float

def FunctionName (a, b):
   some calculations---
   return x, y
我有
df
,我想使用function
FunctionName
,这样我将从现有的系列
df['A],df['B]

df['A], df['B]
df['A_new'], df['B_new'] = df[['A'], df['B']].apply(FunctionName)
给我一个错误

TypeError: unhashable type: 'list'
我也试过了
df['A_new'],df['B_new']=FunctionName(df['A'],df['B'])
给了我一个错误

TypeError: cannot convert the series to <class 'float'>
TypeError:无法将序列转换为
我想将X值返回到
df['A_new']
并将Y值返回到
df['B_new']


谁能告诉我,我在这里错过了什么

我认为需要参数
axis=1
才能按行处理,lambda函数用于按名称定义列,并返回
Series
用于新列-由以下内容添加:


df = pd.DataFrame({'A':[4,5,4,5,5,4],
                   'B':[7,8,9,4,2,3],
                   'C':[1,3,5,7,1,0]})

print (df)
   A  B  C
0  4  7  1
1  5  8  3
2  4  9  5
3  5  4  7
4  5  2  1
5  4  3  0

def FunctionName (a, b):
   x = a * 5
   y = b * 7
   return pd.Series([x, y], index=['A_new','B_new'])

df = df.join(df.apply(lambda x: FunctionName(x['A'], x['B']), axis=1))
print (df)
   A  B  C  A_new  B_new
0  4  7  1     20     49
1  5  8  3     25     56
2  4  9  5     20     63
3  5  4  7     25     28
4  5  2  1     25     14
5  4  3  0     20     21
def FunctionName (a, b):
   x = a * 5
   y = b * 7
   return pd.Series([x, y])

df[['A_new', 'B_new']] = df.apply(lambda x: FunctionName(x['A'], x['B']), axis=1)
print (df)
   A  B  C  A_new  B_new
0  4  7  1     20     49
1  5  8  3     25     56
2  4  9  5     20     63
3  5  4  7     25     28
4  5  2  1     25     14
5  4  3  0     20     21