#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