Почему установка значения столбца в pandas не работает>

#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. Не совсем единственный способ — взгляните на это руководство