Как изменить конкретную ячейку DataFrame панды во время итерации? - PullRequest
0 голосов
/ 15 марта 2019
                   Name  Age  Quantity  Fee  ... wood  wood flooring yellow zoo
0                 Puppy    2         1  150  ...    0              0      0   0
1                London   24         1    0  ...    0              0      0   0
2              Snowball   20         1  150  ...    0              0      0   0
3                Malibu    5         1  100  ...    0              0      0   0

Я хочу, чтобы имя Snowball обновило yellow до значения 2 (и т. Д.). Мне нужно перебрать все из них, сделать некоторую обработку и обновить конкретные столбцы. Какой лучший способ сделать это?

Ответы [ 2 ]

3 голосов
/ 15 марта 2019

Вы можете сделать это, используя

df.loc[df['Name']=='Snowball','yellow'] = 2

Первый параметр loc - это индексатор строк, второй - для выбора столбца

2 голосов
/ 15 марта 2019

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

df.loc[df.Name == 'Snowball', 'yellow'] = 2

Для эффективной итерации по всем строкам фрейма данных используйте df.iterrows:

values_to_insert_into_yellow_by_name = {'Puppy': 1, 'London': 2, 'Snowball': 2, 'Malibu': 3}
for idx, row in df.iterrows():
    name = df.loc[idx, 'Name']
    insert = values_to_insert_into_yellow_by_name[name]
    df.loc[idx, 'yellow'] = insert

Вы можете использовать словарь для хранения значений, которые необходимо вставить.

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