#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 зачем вам цикл? не могли бы вы объяснить на примере в вопросе, пожалуйста? Спасибо