Как правильно установить значения для отдельных ячеек в pandas.Dataframe? - PullRequest
0 голосов
/ 01 июня 2018

Я создал панду DataFrame

df = DataFrame(np.arange(15).reshape(3,5), columns=['a','b','c', 'd', 'e'])

df  a   b   c   d   e
0   0   1   2   3   4
1   5   6   7   8   9
2  10  11  12  13  14

И я хочу установить значения для определенных ячеек:

flag = df['b'] > 3 

df[flag]['b']=10

Но это не работает.

df  a   b   c   d   e
0   0   1   2   3   4
1   5   6   7   8   9
2  10  11  12  13  14

Я использую следующие коды. Это работает, но я не знаю почему?

df['b'][flag] = 10

df  a   b   c   d   e
0   0   1   2   3   4
1   5  10   7   8   9
2  10  10  12  13  14

1 Ответ

0 голосов
/ 01 июня 2018

Не используйте цепную индексацию для присвоения значений.

Вместо этого используйте pd.DataFrame.loc для указания строк и столбцов:

df.loc[df['b'] > 3, 'b'] = 10

Индексатор .locпринимает списки, скаляры или логические массивы.

В pandas документах подробно объясняется почему следует избегать цепной индексации.

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