Я создал функцию, которая заменяет NaN в кадре данных Pandas средствами соответствующих столбцов. Я протестировал функцию с небольшим фреймворком данных, и он сработал. Когда я применил его, хотя в гораздо большей dataframe (30000 строк, 9 столбцов) Я получил сообщение об ошибке: IndexError: индекс вне границИндекс за пределами при замене NaN через функцию в Pandas
Функция заключается в следующем:
# The 'update' function will replace all the NaNs in a dataframe with the mean of the respective columns
def update(df): # the function takes one argument, the dataframe that will be updated
ncol = df.shape[1] # number of columns in the dataframe
for i in range(0 , ncol): # loops over all the columns
df.iloc[:,i][df.isnull().iloc[:, i]]=df.mean()[i] # subsets the df using the isnull() method, extracting the positions
# in each column where the
return(df)
Небольшой dataframe I используется для проверки функции:
0 1 2 3
0 NaN NaN 3 4
1 NaN NaN 7 8
2 9.0 10.0 11 12
Не могли бы вы объяснить ошибку? Ваш совет будет оценен по достоинству.
Я изменил код в моей функции, как Вы предложили, но я все еще получаю ошибку: IndexError: одно позиционное индексатор вне границ – im7
я побежал, что точный код с образцом 'df', и он бежал. Я получил 'SettingWithCopyWarning', но он запустился. – piRSquared
Да, я это понимаю. Фактически, как я упомянул в своем посте, оригинальная функция еще до исправления запускается в тестовом кадре данных. Однако он не работает на целевом фрейме данных, который можно найти здесь: https://ndownloader.figshare.com/files/2292172 .. Не могли бы вы это объяснить? – im7