У меня есть фрейм данных
d = {'name': ['john', 'tom', 'bob', 'rock', None], 'DoB': ['01/02/2010', '01/02/2012', '11/22/2014', '11/22/2014', '09/25/2016'], 'Address': ['NY', 'NJ', 'PA', 'NY', 'CA']}
df = pd.DataFrame(data = d)
df['month'] = pd.DatetimeIndex(df['DoB']).month
df['year'] = pd.DatetimeIndex(df['DoB']).year
Что я хочу сделать: замените первые две буквы на «XX» в столбце имени, если год = 2014.
Мой код:
df.loc[ (df.year == 2014) , df.name.str[0:2] ] = 'XX'
Прежде всего, я получаю эту ошибку:
ValueError: не может индексировать вектор, содержащий значения NA / NaN
Но даже если вместо None было значение - скажем 'jimy' - я получаю следующую ошибку: KeyError: "['jo' 'to' 'bo' 'ro' 'ji'] нет в индексе"
Я также думал о методе замены, но он работает, только если вы хотите заменить данную строку.
Есть предложения?