Объединение 2 столбцов в одном фрейме данных pandas в новый столбец с сохранением только определенных значений

#python #pandas #dataframe #loops

#python #pandas #фрейм данных #циклы

Вопрос:

Я работаю с набором данных, содержащим информацию о подержанных автомобилях, и в наборе данных отсутствовали некоторые значения года. Моя идея заключалась в том, чтобы попытаться использовать некоторые номера VIN для декодирования года и заполнить все недостающие годы в новом столбце. Моя цель — создать новый столбец, в котором указаны исходные годы, которые там были, а также любые недостающие значения года, которые я смог расшифровать по номеру VIN. Вот пример:

 Original Dataframe:
    year    vin_year
0   2009    ***
1   2010    ***
2   ***     2010
3   2020    2020
4   ***     2011
5   ***     ***

Updated Dataframe:
    year    vin_year    all_year
0   2009    ***         2009
1   2010    ***         2010
2   ***     2010        2010
3   2020    2020        2020
4   ***     2011        2011
5   ***     ***         ***
  

Код, который я пробовал до сих пор, приведен ниже, однако я получаю «недопустимый синтаксис». Любая помощь приветствуется, спасибо!

 for i in vehicle_data['year']:
    for j in vehicle_data['vin_year']:
        if i != j and j != '***':
            vehicle_data['all_year'] = j
            else vehicle_data['allyear'] = i
  

Ответ №1:

Использование numpy where — отличное решение

 import pandas as pd
import numpy as np

# make an example
data = {'A' : [2000, '***',2010, '***'], 'B' : [2000, 2005, 2010, '***']} 
df = pd.DataFrame(data)

# combine the results
df['C'] = np.where(df['A'] == '***', df['B'], df['A'])

df