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
,我想使用functionFunctionName
,这样我将从现有的系列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