#python #pandas
#python #pandas
Вопрос:
[введите описание изображения здесь] [1] У меня есть фрейм данных с именем election, и я хочу найти, установить столбец winner как NaN для строк, где поле меньше 1
![введите описание изображения здесь][2]
Я делаю что-то вроде этого
too_close = election['margin']<1
election.loc[too_close, 'winner'] = np.nan # THIS IS WORKING
Мой вопрос заключается в том, что election.loc[too_close, 'winner']
и election[too_close].winner
оба возвращают pandas series. Почему установка значения столбца с использованием последнего не работает, а первое работает. Я новичок в pandas. Вот 5 начальных значений фрейма данных
state total Obama Romney winner voters turnout margin
county
Adams PA 41973 35.482334 63.112001 Romney 61156 68.632677 27.629667
Allegheny PA 614671 56.640219 42.185820 Obama 924351 66.497575 14.454399
Armstrong PA 28322 30.696985 67.901278 Romney 42147 67.198140 37.204293
Beaver PA 80015 46.032619 52.637630 Romney 115157 69.483401 6.605012
Bedford PA 21444 22.057452 76.986570 Romney 32189 66.619031 54.929118
Комментарии:
1. Ваша ссылка на изображение кажется неработающей. Вы можете это исправить?
Ответ №1:
Pandas разделяет методы получения и настройки (т. Е. изменения). Поскольку настройка изменяет ваш исходный фрейм данных, Pandas хочет быть более осторожным в том, как вы это делаете. loc
это официальный способ сделать это. Синтаксис like election[too_close].winner
— это просто ярлык (или «сахар») для получения, но не позволяет вам устанавливать.
Комментарии:
1. Спасибо!! Имеет смысл. Итак, .loc — это единственный способ установить значения?
2. Не совсем единственный способ — взгляните на это руководство