- API reference
- DataFrame
- pandas.DataF...
pandas.DataFrame.pipe#
- DataFrame.pipe(func,*args,**kwargs)[source]#
Apply chainable functions that expect Series or DataFrames.
- Parameters:
- funcfunction
Function to apply to the Series/DataFrame.
args
, andkwargs
are passed intofunc
.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 return type of
See also
DataFrame.apply
Apply a function along input axis of DataFrame.
DataFrame.map
Apply a function elementwise on a whole DataFrame.
Series.map
Apply a mapping correspondence on a
Series
.
Notes
Use
.pipe
when chaining together functions that expectSeries, DataFrames or GroupBy objects.Examples
Constructing a income DataFrame from a dictionary.
>>>data=[[8000,1000],[9500,np.nan],[5000,2000]]>>>df=pd.DataFrame(data,columns=['Salary','Others'])>>>df Salary Others0 8000 1000.01 9500 NaN2 5000 2000.0
Functions that perform tax reductions on an income DataFrame.
>>>defsubtract_federal_tax(df):...returndf*0.9>>>defsubtract_state_tax(df,rate):...returndf*(1-rate)>>>defsubtract_national_insurance(df,rate,rate_increase):...new_rate=rate+rate_increase...returndf*(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 Others0 5892.48 736.561 6997.32 NaN2 3682.80 1473.12
If you have a function that takes the data as (say) the secondargument, pass a tuple indicating which keyword expects thedata. For example, suppose
national_insurance
takes its data asdf
in the second argument:>>>defsubtract_national_insurance(rate,df,rate_increase):...new_rate=rate+rate_increase...returndf*(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 Others0 5892.48 736.561 6997.32 NaN2 3682.80 1473.12