#python #function #dataframe
#python #функция #фрейм данных
Вопрос:
Мне нужно использовать функцию для вычисления нового столбца для таблицы, используя существующие данные из ее 4 столбцов.
Предположим, у меня есть функция, которая вычисляет заказы, показы или клики — любые данные из разных источников. Что-то вроде этого:
def claculate_new_columns(complete_orders_a, total_a, completed_orders_b, total_b):
total = 0.0
#just some random calculations bellow - not important
source_a = complete_dorders_a 1
test_a = total_a 1
source_b = completed_orders_b 1
test_b = total_b 1
for i in something(smth):
total = source_a*test_a*source_b*test_b
return total
Как мне использовать его с данными из столбцов фрейма данных?
Я хочу пробежаться по строкам в столбцах и вставить результаты в новый столбец. Что-то вроде этого (очевидно, это не работает):
old_df['new_column'] = old_df.apply(claculate_new_columns(column1,column2,column3,column4))
Был бы рад правильному способу применения таких функций к фрейму данных и использования этих столбцов фрейма данных в качестве аргументов функции. Каков правильный синтаксис?
Решения из StackOverflow не работают для меня, вероятно, потому, что я искал неправильные ответы.
Ответ №1:
Используйте лямбда-функцию:
old_df['new_column'] = old_df.apply(lambda row: claculate_new_columns(row['column1'], row['column2'], row['column3'], row['column4']), axis=1)
Ответ №2:
Для выполнения вычислений между столбцами и создания нового столбца внутри функции используйте apply
с axis = 1
Например:
df = pd.DataFrame({'column_1':[1,2,3,4,5],
'column_2':[10,20,30,40,50]})
def func(df):
# All Calculations here
df['new_column'] = df['column_1'] df['column_2']
return df
df.apply(func, axis=1)
Результаты
column_1 column_2 new_column
0 1 10 11
1 2 20 22
2 3 30 33
3 4 40 44
4 5 50 55