Pandas - pandas.Series.pipe 函式

Himmelbleu發表於2024-03-13

類似於管道,上一個函式處理完成的結果交給下一個函式,而不是一個函式套一個函式。

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 為傳遞函式的引數列表。

相關文章