Python中文
首页
教程
问答
标签
搜索
登录
注册
使用Python中缀语法从一个函数到另一个函数的“管道”输出
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我试图使用Python/Pandas(作为一个学习练习)大致复制R中的<a href="https://cran.rstudio.com/web/packages/dplyr/vignettes/introduction.html">dplyr</a>包。我被困在“管道”功能上。</p> <p>在R/dplyr中,这是使用管道运算符<code>%>%</code>完成的,其中<code>x %>% f(y)</code>相当于<code>f(x, y)</code>。如果可能的话,我想使用中缀语法复制它(请参见<a href="http://dev-tricks.net/pipe-infix-syntax-for-python">here</a>)。</p> <p>为了说明这一点,请考虑下面的两个函数。</p> <pre><code>import pandas as pd def select(df, *args): cols = [x for x in args] df = df[cols] return df def rename(df, **kwargs): for name, value in kwargs.items(): df = df.rename(columns={'%s' % name: '%s' % value}) return df </code></pre> <p>第一个函数接受一个dataframe并只返回给定的列。第二个获取数据帧,并重命名给定的列。例如:</p> <pre><code>d = {'one' : [1., 2., 3., 4., 4.], 'two' : [4., 3., 2., 1., 3.]} df = pd.DataFrame(d) # Keep only the 'one' column. df = select(df, 'one') # Rename the 'one' column to 'new_one'. df = rename(df, one = 'new_one') </code></pre> <p>为了使用pipe/infix语法实现相同的功能,代码如下:</p> <pre><code>df = df | select('one') \ | rename(one = 'new_one') </code></pre> <p>所以<code>|</code>左侧的输出作为第一个参数传递给右侧的函数。每当我看到这样的事情完成时(例如,<a href="http://code.activestate.com/recipes/384122-infix-operators/">here</a>),它就涉及lambda函数。是否可以用同样的方式在函数之间传递Pandas的数据帧?</p> <p>我知道Pandas有<code>.pipe</code>方法,但对我来说重要的是我提供的示例的语法。任何帮助都将不胜感激。</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>您可以使用<a href="https://github.com/sspipe/sspipe" rel="nofollow noreferrer">sspipe</a>库,并使用以下语法:</p> <pre><code>from sspipe import p df = df | p(select, 'one') \ | p(rename, one = 'new_one') </code></pre>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
无法使用Django restfram生成PDF
6 回答
无法使用Django Rest框架发送压缩的gzip数据
3 回答
无法使用Django rest框架进行身份验证(请求用户=匿名用户)
10 回答
无法使用Django、Python和JavaScrip触发onclick函数
6 回答
无法使用Django.views.generic.View保存表单
3 回答
无法使用Django(python 2.7,OS X 10.11.1)
1 回答
无法使用Django/mongoengine连接到MongoDB(身份验证失败)
6 回答
无法使用Django\u mssql\u后端迁移到外部hos
10 回答
无法使用Django&Python3.4连接到MySql
7 回答
无法使用Django+nginx上载媒体文件
7 回答
无法使用Django1.6导入名称模式
4 回答
无法使用Django1.7和mongodb登录管理站点
10 回答
无法使用Djangoadmin创建项目,进程使用了错误的路径,因为我事先安装了错误的Python
7 回答
无法使用Djangockedi验证CBV中的字段
7 回答
无法使用Djangocketditor上载图像(错误400)
5 回答
无法使用Djangocron进行函数调用
6 回答
无法使用Djangofiler djang上载文件
7 回答
无法使用Djangokronos
9 回答
无法使用Djangomssql provid
4 回答
无法使用Djangomssql连接到带有Django 1.11的MS SQL Server 2016
5 回答