#python #pandas
Вопрос:
example = {
'Team':['Australia', 'England', 'South Africa', 'Australia', 'England', 'India',
'India', 'South Africa', 'England', 'India','India','Australia'],
'Player':['Ricky Ponting', 'Joe Root', 'Hashim Amla', 'David Warner',
'Jos Buttler', 'Virat Kohli', 'Rohit Sharma', 'David Miller',
'Eoin Morgan', 'Dinesh Karthik',np.nan ,np.nan],
'Runs':[345, 336, 689, 490, 989, 672, 560, 455, 342, 376,370,400],
'Salary':[34500, 33600, 68900, 49000, 98899, 67562, 56760, 45675, 34542, 31176,
35000, 34000]
}
df = pd.DataFrame(example)
Теперь я хочу заменить значение » nan » на «Joe Root», где Team == «Индия»
Я попробовал следующий метод без ошибок:
df.loc[df.Team == 'India'].fillna(value = 'Joe Root')
Но когда я использую метод ниже, он выдает ошибку:
df.loc[df.Team == 'India'].fillna('Joe Root',inplace = True)
Пожалуйста, кто-нибудь может мне помочь?
Комментарии:
1. Пожалуйста, отформатируйте свой вопрос. Также не помещайте свой текст в вопрос в качестве комментариев. Это может быть не замечено читателем.
Ответ №1:
ваш код df.loc[df.Team == 'India'].fillna('Joe Root',inplace = True)
разрезает фрейм данных, а затем пытается использовать inplace. т. е. создает временный фрейм данных и обновляет его( inplace = True
). он может возвращать частично обновленный фрейм данных, если используется следующим образом
my_temp=df.loc[df.Team == 'India']
my_temp.fillna('Joe Root',inplace = True)
my_temp
желание здесь состоит в том, чтобы обновить df, чтобы вы могли попробовать
df.loc[df.Team == 'India','Player']=df.loc[df.Team == 'India','Player'].fillna(value='Joe Root')
Ответ №2:
Просто измените выделение следующим образом:
df[df.Team == 'India'] = df[df.Team == 'India'].fillna(value = 'Joe Root')
# selection = selection.fillna(value)