#python #pandas #dataframe
Вопрос:
У меня есть фрейм данных о людях, и вместо того, чтобы редактировать его в Excel, я хотел бы иметь возможность напрямую вводить данные в pandas.
В приведенной ниже таблице примеров Джон ничего не имеет в df['Group']
df
Имя | ID | Класс | Группа | |
---|---|---|---|---|
0 | Джон | 001 | 89 | Nan |
1 | Джейн | 002 | 56 | Группа 1 |
2 | Джоан | 003 | 91 | Группа 2 |
3 | Дэвид | 004 | 45 | Группа 1 |
Я хотел бы иметь возможность изменить это на «Группу 4», желательно без использования iloc
(это большой df).
Имя | ID | Класс | Группа | |
---|---|---|---|---|
0 | Джон | 001 | 89 | Группа 4 |
1 | Джейн | 002 | 56 | Группа 1 |
2 | Джоан | 003 | 91 | Группа 2 |
3 | Дэвид | 004 | 45 | Группа 1 |
Я пытался
df.loc[df['Name'] == 'John']['Group'] = 'Group 4'
df2.loc[0,'Group'] = 'Group 4'
Это не работает (вероятно, очевидно для вас).
Есть ли способ сделать это?
Комментарии:
1.
df.loc[df['Name'] == 'John','Group'] = 'Group 4'
.2.
df.loc[df['Name'] == 'John','Group'] = 'Group 4'
если вы хотите сделать это по имениdf.Group.fillna('Group 4',inplace=True)
, если вы хотите заполнить все » NaN «(убедитесь, что это NaN) в столбце группы, чтобы быть «Group4»
Ответ №1:
Для назначения новых переменных в панд вы можете использовать либо loc
или at
метод, указав имя меток:
loc
метод:
df.loc[df['name'] == 'John', 'Group'] = 'Group 4'
at
метод(предостережение: at
одновременно можно получить доступ только к одному значению)
df.at[df['name'] == 'John', 'Group'] = 'Group 4'
# **OR**
df.at[0, 'Group'] = 'Group 4'