[Pandas] pandas.Series.pipe
类似于 Linux 管道,上一个函数处理完成的结果交给下一个函数,而不是一个函数套一个函数。
def subtract_federal_tax(df):
return df * 0.9
def subtract_state_tax(df, rate):
return df * (1 - rate)
def subtract_national_insurance(df, rate, rate_increase):
new_rate = rate + rate_increase
return df * (1 - new_rate)
# 函数一个套一个,阅读性非常差
subtract_national_insurance(
subtract_state_tax(subtract_federal_tax(df), rate=0.12),
rate=0.05,
rate_increase=0.02)
改用 pipe,具体文档查看 pandas.Series.pipe。
df.pipe(subtract_federal_tax)
.pipe(subtract_state_tax, rate=0.12)
.pipe(subtract_national_insurance, rate=0.05, rate_increase=0.02)
pipe 第一个参数传递函数,第二个参数 *args
是传递的函数参数列表。