Как использовать метод fillna

#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)