pandas.Series.pipe#
- Series.pipe(func, *args, **kwargs)[源代码]#
应用可链式调用的函数,这些函数期望 Series 或 DataFrame。
- Parameters:
- funcfunction
应用于 Series/DataFrame 的函数。
args和kwargs会被传递给func。或者一个(callable, data_keyword)元组,其中data_keyword是一个表示callable中哪个关键字期望 Series/DataFrame 的字符串。- *argsiterable, 可选
传递给
func的位置参数。- **kwargsmapping, 可选
传递给
func的关键字参数字典。
- Returns:
func的返回类型。
参见
DataFrame.apply沿 DataFrame 的输入轴应用函数。
DataFrame.map在整个 DataFrame 上逐个元素地应用函数。
Series.map对
Series应用映射关系。
Notes
当链接期望 Series、DataFrame 或 GroupBy 对象的函数时,使用
.pipe。Examples
从字典构造收入 DataFrame。
>>> 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
执行所得税减免的函数。
>>> 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)
你可以这样写
>>> ( ... 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
如果你有一个函数,它将数据作为(比如说)第二个参数,则传递一个元组来指示哪个关键字期望数据。例如,假设
national_insurance的第二个参数df期望数据:>>> 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