Python中如何实现类似R管道的DataFrame链式传参至自定义函数?
Python实现DataFrame链式调用自定义函数的方法
要实现类似R中管道的链式调用,直接把前一步的DataFrame结果传入自定义函数,用pandas的pipe()方法就能搞定,和R的%>%逻辑一致:
方法说明
pipe()会自动将链式调用中前一步的DataFrame对象,作为第一个参数传入你的自定义函数,你只需要在pipe()里传入自定义函数名,以及函数所需的其他参数即可。
修改后的代码示例
import pandas as pd def transform_df(df, column, threshold): return df[df[column] < threshold] # 直接链式调用,无需预先定义df变量 result = ( pd.DataFrame({'columnA':[1, 1.5, 2, 3], 'columnB':['A', 'B', 'C', 'D']}) .rename(columns={'columnB':'columnC'}) .pipe(transform_df, 'columnA', 2) ) print(result)
关键细节
- 你的自定义函数
transform_df必须把DataFrame作为第一个参数,这样pipe()才能自动传递前一步的结果 - 你之前尝试的
.transform()是pandas内置的DataFrame方法,用于对数据做转换操作,不能直接用来调用自定义函数,所以要换成pipe() - 用括号把链式调用包起来,可以避免用反斜杠换行,代码更整洁
内容的提问来源于stack exchange,提问作者helpmeplease
相关产品推荐
相关产品推荐

