Pandas Фрейм данных: почему существует разница между df.loc [df ['height']> 3, 'height'] = 2 и df.loc [df ['height']> 3, ['height']] = 2 - PullRequest
1 голос
/ 11 апреля 2020

У меня есть pandas фрейм данных с именем df, который имеет несколько столбцов, один из которых называется 'высота'. Я хочу изменить высоту выше 3 и заменить их на 2. Я использовал этот код:

df.loc[df['height']>3,'height'] = 2

это не вносит никаких изменений.

Я использую этот код:

df.loc[df['height']>3,['height']] = 2

это прекрасно работает. Я вроде понимаю, что в первой версии была создана копия версии df, но не понятно почему, и я прекрасно понимаю, что [] может внести такое изменение.

Может кто-нибудь объяснить, что происходит?

1 Ответ

0 голосов
/ 11 апреля 2020

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

Предполагается, что у вас есть простой фрейм данных, такой как

import pandas as pd
df = pd.DataFrame({'height':range(6)})

тогда обе ваши строки кода работают отлично, за исключением того, что дополнительный оператор индексации [] во второй версии совершенно не нужен, и что ни copy version of df не задействовано ни в одном из случаев.

...