Как избежать SettingWithCopyWarning при установке одного значения? - PullRequest
0 голосов
/ 11 декабря 2018

Как я могу избежать предупреждения SettingWithCopyWarning в этом случае?

Обычно достаточно использовать copy() ранее созданного DataFrame.Это не имеет смысла в этой ситуации:

import pandas as pd
import numpy as np
df = pd.DataFrame({"a": [7, 2, 3], "b": [4, 5, 6], "c": [np.nan, np.nan, np.NaN]})
df.c.iloc[0] = 100

.

SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  self._setitem_with_indexer(indexer, value)

1 Ответ

0 голосов
/ 11 декабря 2018

Решение, если по умолчанию RangeIndex используется DataFrame.loc с указанием индекса и значения столбца:

df.loc[0, 'c'] = 100
print (df)
   a  b      c
0  7  4  100.0
1  2  5    NaN
2  3  6    NaN

Если хотите установить по позициям с DataFrame.iloc необходимо Index.get_loc для позиции столбца c:

df.iloc[0, df.columns.get_loc('c')] = 100
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...