pandas.DataFrame.pipe — pandas 3.0.0.dev0+2095.g2e141aaf99 documentation (original) (raw)

DataFrame.pipe(func, *args, **kwargs)[source]#

Apply chainable functions that expect Series or DataFrames.

Parameters:

funcfunction

Function to apply to the Series/DataFrame.args, and kwargs are passed into func. Alternatively a (callable, data_keyword) tuple wheredata_keyword is a string indicating the keyword ofcallable that expects the Series/DataFrame.

*argsiterable, optional

Positional arguments passed into func.

**kwargsmapping, optional

A dictionary of keyword arguments passed into func.

Returns:

The return type of func.

The result of applying func to the Series or DataFrame.

Notes

Use .pipe when chaining together functions that expect Series, DataFrames or GroupBy objects.

Examples

Constructing an income DataFrame from a dictionary.

data = [[8000, 1000], [9500, np.nan], [5000, 2000]] df = pd.DataFrame(data, columns=["Salary", "Others"]) df Salary Others 0 8000 1000.0 1 9500 NaN 2 5000 2000.0

Functions that perform tax reductions on an income DataFrame.

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)

Instead of writing

subtract_national_insurance( ... subtract_state_tax(subtract_federal_tax(df), rate=0.12), ... rate=0.05, ... rate_increase=0.02, ... )

You can write

( ... df.pipe(subtract_federal_tax) ... .pipe(subtract_state_tax, rate=0.12) ... .pipe(subtract_national_insurance, rate=0.05, rate_increase=0.02) ... ) Salary Others 0 5892.48 736.56 1 6997.32 NaN 2 3682.80 1473.12

If you have a function that takes the data as (say) the second argument, pass a tuple indicating which keyword expects the data. For example, suppose national_insurance takes its data as dfin the second argument:

def subtract_national_insurance(rate, df, rate_increase): ... new_rate = rate + rate_increase ... return df * (1 - new_rate) ( ... df.pipe(subtract_federal_tax) ... .pipe(subtract_state_tax, rate=0.12) ... .pipe( ... (subtract_national_insurance, "df"), rate=0.05, rate_increase=0.02 ... ) ... ) Salary Others 0 5892.48 736.56 1 6997.32 NaN 2 3682.80 1473.12