pandas.DataFrame.pipe #

数据框。管道( func , * args , ** kwargs ) [来源] #

应用需要 Series 或 DataFrame 的可链接函数。

参数
函数函数

应用于系列/数据帧的函数。 args,并被kwargs传递到func。或者一个元组,其中 是一个字符串,指示需要系列/数据帧的关键字 。(callable, data_keyword)data_keywordcallable

*args可迭代,可选

位置参数传递到func.

**kwargs映射,可选

传递到 的关键字参数的字典func

返回
的返回类型func

也可以看看

DataFrame.apply

沿 DataFrame 的输入轴应用函数。

DataFrame.map

在整个 DataFrame 上按元素应用函数。

Series.map

在 上应用映射对应关系Series

笔记

.pipe将需要 Series、DataFrames 或 GroupBy 对象的函数链接在一起时使用。

例子

从字典构建收入数据框。

>>> 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

对收入 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)

而不是写作

>>> 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