Использование apply()
не изменяет DataFrame на месте.Вы должны назначить вывод операции обратно исходному кадру данных.
@ ответ coldspeed здесь объясняет, что здесь происходит:
Все эти нарезки /Операции индексирования создают представления / копии исходного кадра данных, и вы затем присваиваете df
этим представлениям / копиям, что означает, что к оригиналам вообще не прикасаются.
В вашем случае вам необходимо выполнить:
columns = ['DISTINCT_COUNT','MAX_COL_LENGTH', 'MIN_COL_LENGTH', 'NULL_COUNT']
grid[columns] = grid[columns].apply(pd.to_numeric, errors='ignore')
Или вы также можете сделать:
grid[columns] = pd.to_numeric(grid[columns], errors='ignore')