在pandas中进行方法链接时如何引用中间数据帧?

时间:2017-09-22 22:05:33

标签: python r pandas dplyr

在dplyr中链接数据帧操作时,可以使用匿名依赖于当前数据帧的操作,这是一个简单的例子:

data.frame(x=3) %>% filter(x == 3) %>% mutate(x = x/sum(.$x))

在这里,我可以通过引用“。”对数据帧本身进行操作,直到链式操作。

使用方法链接在pandas中执行此操作的等效方法是什么?没有定义中间变量是否可能?

2 个答案:

答案 0 :(得分:3)

在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]})

答案 1 :(得分:0)

对于 datar,您可以使用 f 代词:

>>> from datar.all import f, tibble, filter, mutate, sum
>>> 
>>> tibble(x=3) >> filter(f.x==3) >> mutate(x=f.x/sum(f.x))
          x
  <float64>
0       1.0

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