类似于管道,上一个函数处理完成的结果交给下一个函数,而不是一个函数套一个函数。

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 为传递函数的参数列表。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。