Как мне изменить конкретную ячейку фрейма данных pandas во время итерации?

#python #pandas #dataframe

#python #pandas #фрейм данных

Вопрос:

                    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 (и так далее). Мне нужно выполнить итерацию по всем из них, выполнить некоторую обработку и обновить определенные столбцы. Каков наилучший способ сделать это?

Комментарии:

1. Вы могли бы начать с рассмотрения индексации и выбора данных

2. Чтобы расширить комментарий яту, OP вы хотите по существу выбрать строки, где Name=Snowball а затем назначить yellow=2

Ответ №1:

Вы можете сделать это с помощью

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

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

Ответ №2:

Чтобы проиндексировать конкретную ячейку и изменить ее значение, используйте 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
  

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

Комментарии:

1. Как я могу эффективно выполнять итерации по всем строкам?

2. @Shamoon зачем вам цикл? не могли бы вы объяснить на примере в вопросе, пожалуйста? Спасибо