pandas.DataFrame.pipe
- DataFrame.pipe(func, *args, **kwargs)[source]
-
Применяет цепочки функций, которые ожидают Series или DataFrame.
- Параметры:
-
- func:функция
-
Функция, применяемая к Series/DataFrame.
args, иkwargsпередаются вfunc. В качестве альтернативы, кортеж(callable, data_keyword), гдеdata_keyword— строка, указывающая ключевое словоcallable, которое ожидает Series/DataFrame. - *args:итерируемый, необязательно
-
Позиционные аргументы, передаваемые в
func. - **kwargs:словарь, необязательно
-
Словарь ключевых аргументов, передаваемых в
func.
- Возвращает:
-
- тип возвращаемого значения
func.
- тип возвращаемого значения
См. также
DataFrame.apply-
Применить функцию по входной оси DataFrame.
DataFrame.map-
Применить функцию поэлементно ко всему DataFrame.
Series.map-
Применить соответствие отображения к
Series.
Примечания
Используйте
.pipeпри объединении функций, которые ожидают объекты Series, DataFrame или GroupBy.Примеры
Создание 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
Функции, выполняющие снижение налогов в 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
© 2008–2022, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/2.2.2/reference/api/pandas.DataFrame.pipe.html