Метод pipe
Метод pipe применяется к DataFrame
и позволяет применить пользовательскую функцию
к данным. Первым параметром передается функция,
которая принимает DataFrame и возвращает
преобразованный DataFrame. Метод особенно полезен
для создания читаемых цепочек преобразований.
Синтаксис
df.pipe(func, *args, **kwargs)
Пример
Применим функцию для увеличения всех значений в столбце 'a' в два раза:
import pandas as pd
def double_a(df):
df['a'] = df['a'] * 2
return df
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
res = df.pipe(double_a)
print(res)
Результат выполнения кода:
a b
0 2 10
1 4 20
2 6 30
3 8 40
4 10 50
Пример
Передадим дополнительные аргументы в функцию:
import pandas as pd
def multiply_column(df, column, factor):
df[column] = df[column] * factor
return df
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
res = df.pipe(multiply_column, 'b', 3)
print(res)
Результат выполнения кода:
a b
0 1 30
1 2 60
2 3 90
3 4 120
4 5 150
Пример
Создадим цепочку из нескольких преобразований:
import pandas as pd
def add_constant(df, value):
df['c'] = value
return df
def square_a(df):
df['a'] = df['a'] ** 2
return df
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
res = (df.pipe(square_a)
.pipe(add_constant, 100))
print(res)
Результат выполнения кода:
a b c
0 1 10 100
1 4 20 100
2 9 30 100
3 16 40 100
4 25 50 100
Пример
Используем лямбда-функцию в pipe:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
res = df.pipe(lambda x: x[x['a'] > 2])
print(res)
Результат выполнения кода:
a b
2 3 30
3 4 40
4 5 50