DataFrame Python для создания r (t-1) .iloc [1:] = r (t) .iloc [0: -1] - PullRequest
0 голосов
/ 09 марта 2019

Я хочу сделать столбец фрейма данных панд, со второго ряда до последнего ряда, равного от первого ряда другого столбца до второго последнего ряда: это выглядит так:

r(t-1).iloc[1:] = r(t).iloc[0:-1](r(t) and r(t-1)) 

являются столбцами одного и того же фрейма данных

проблема, с которой я столкнулся, заключается в том, что python не понял, что я хочу изменить строку копируемых данных:

IR['r(t-1)'].iloc[1:] = IR['r(t)'].iloc[0:-1]
/anaconda3/lib/python3.6/site-packages/pandas/core/indexing.py:190: 

SettingWithCopyWarning: Значение пытается быть установлено для копии среза из DataFrame

См. Предостережения в документации: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy

  self._setitem_with_indexer(indexer, value)

Кто-нибудь знает, как с этим бороться?

1 Ответ

0 голосов
/ 09 марта 2019

Добро пожаловать на SO.

Как решить вашу проблему

Кажется, вам нужно смещение в одном из столбцов. как показывают первые две строки вашего вопроса. Вы можете сделать это методом shift() для панелей данных pandas. Тогда ваш ответ мог бы быть:

df['new_row'] = df['old_row'].shift(1)

Вы можете смещаться вперед или назад с отрицательными и положительными значениями смещения

С какой ошибкой вы столкнулись

Короче говоря, pandas предоставил способы записи и чтения фрейма данных, и он фактически не допускает никаких других действий. Предупреждение показывает, что вы не используете хороший (по скромному мнению панд!) Способ записи в фрейм данных (используя iloc), поскольку iloc в основном используется для доступа к строкам по индексу.

Любой эксперт по пандам здесь, пожалуйста, поправьте меня, если я ошибаюсь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...