Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用“变换”从两个不同的列计算值_Python_Pandas - Fatal编程技术网

Python 使用“变换”从两个不同的列计算值

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

我想应用一个小函数,使用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.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)