Python 使用“变换”从两个不同的列计算值
我想应用一个小函数,使用transform函数在一个数据帧上使用两个参数 考虑一下这个相当无用的示例函数:Python 使用“变换”从两个不同的列计算值,python,pandas,Python,Pandas,我想应用一个小函数,使用transform函数在一个数据帧上使用两个参数 考虑一下这个相当无用的示例函数: def function(x): print (x) return x df[["A", "B"]].transform(function) 将熊猫作为pd导入 def示例_函数(x,y): 如果y==“hi”: res=x*3 其他: res=x 返回res 根据y中的值(“hi”或其他值),值x将bu乘以3或原封不动地返回 给出这个示例数据帧 df=pd.Dat
def function(x):
print (x)
return x
df[["A", "B"]].transform(function)
将熊猫作为pd导入
def示例_函数(x,y):
如果y==“hi”:
res=x*3
其他:
res=x
返回res
根据y中的值(“hi”或其他值),值x将bu乘以3或原封不动地返回
给出这个示例数据帧
df=pd.DataFrame(dict([(“A”,“1,2,3,4]),(“B”,“hi”,“ho”,“ho”,“hi”)))
我想得到这个结果:
A B C
0 1 hi 3
1 2 ho 2
2 3 ho 3
3 4 hi 12
但是我得到了一个错误(缺少1个必需的位置参数)。有什么建议可以解决这个问题吗?这是不可能的,因为
transform
分别处理每一列,所以不能在列之间进行过滤(系列
)
按需工作的解决方案:
df["combined"] = df.apply(lambda x: example_function(x.A, x.B), axis=1)
print (df)
A B combined
0 1 hi 3
1 2 ho 2
2 3 ho 3
3 4 hi 12
您可以使用此功能进行检查:
def function(x):
print (x)
return x
df[["A", "B"]].transform(function)