Каков эффективный способ создания нового столбца фрейма данных и заполнения значений в python?

#python #pandas #dataframe

Вопрос:

У меня есть пара столбцов "car_model" , "year" которые мне нужно отправить в функцию как a tuple , и она вернет мне цену(плавающую).

Как выполнить итерацию по строкам фрейма данных, отправить значения "car_model" и "year" в функцию и добавить возвращенное значение в новый столбец "price" ?

Я думал о:

 model_year = CAR[["car_model", "year"]]

for x in model_year.to_numpy():
    model_year_tuple = tuple(x)
    price = calculate_price(model_year_tuple)
    //how to add to the column? the line below will always use the last calculated price
    CAR['price'] = price
 

Ответ №1:

Мы можем сделать

 model_year['out'] = model_year.agg(tuple,1).map(calculate_price)
 

Ответ №2:

Попробуй apply :

 CAR['price'] = model_year.apply(lambda x: calculate_price(tuple(x)), axis=1)
 

Или понимание списка:

 CAR['price'] = [calculate_price(x) for x in zip(CAR['car_model'], CAR['year'])]
 

Тем не менее, вам следует попробовать переписать свою calculate_price функцию так, чтобы она принимала массив numpy вместо кортежей ванильного питона.

Ответ №3:

это должно сработать

  df['price'] = df.apply(lambda x: price((x['car_model'],x['year'])))