Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.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_R_Pandas_Dplyr - Fatal编程技术网

Python 熊猫中的方法链接时如何引用中间数据帧?

Python 熊猫中的方法链接时如何引用中间数据帧?,python,r,pandas,dplyr,Python,R,Pandas,Dplyr,在dplyr中链接数据帧操作时,可以使用匿名依赖于当前数据帧的操作,例如: data.frame(x=3) %>% filter(x == 3) %>% mutate(x = x/sum(.$x)) 在这里,我可以通过引用对数据帧本身进行操作,直至链接操作 使用方法链接在熊猫中实现这一点的等效方法是什么?可以不定义中间变量吗?在python中 df[df.W01.eq(3)].assign(x=df[df.W01.eq(3)].W02.transform(lambda x : x/

在dplyr中链接数据帧操作时,可以使用匿名依赖于当前数据帧的操作,例如:

data.frame(x=3) %>% filter(x == 3) %>% mutate(x = x/sum(.$x))
在这里,我可以通过引用对数据帧本身进行操作,直至链接操作

使用方法链接在熊猫中实现这一点的等效方法是什么?可以不定义中间变量吗?

在python中

df[df.W01.eq(3)].assign(x=df[df.W01.eq(3)].W02.transform(lambda x : x/sum(x)))
Out[873]: 
   W01  W02         x
0    3    1  0.333333
1    3    1  0.333333
2    3    1  0.333333
说明:

df[df.W01.eq(3)] : filter(x == 3)

.assign(x=df[df.W01.eq(3)].W02.transform(lambda x : x/sum(x))) : mutate(x = x/sum(.$x))

数据输入

df = pd.DataFrame({'W01': [3,3,3,2], 'W02': [1,1,1,999]})
在中,您可以使用
f
代词:

>>来自datar.all导入f、tible、filter、mutate、sum
>>> 
>>>tibble(x=3)>>过滤器(f.x==3)>>变异(x=f.x/sum(f.x))
x
0       1.0

我是这个包裹的作者。如果您有任何问题,请随时提交问题。

和R:
transform(df[df$W01==3,],X=W02/sum(W02))
…很高兴看到一位同时涉足这两个领域的用户@冻糕,只要认为R和Python是相同的~:-)。分配accept lambdas就是为了这个原因,仅供参考;您正在重复Selection这似乎不是很好地概括,因为它依赖于重复assign操作中的所有转换。在这个简单的例子中,这是很好的,但是如果你在前面加上5或6个操作,那么用这种方式写它是非常难看的(虽然不是不可能的)。