8

Установить значение для конкретной ячейки в DataFrame pandas с использованием индекса

36

Я создал Pandas DataFrame:

df = DataFrame(index=['A','B','C'], columns=['x','y'])

Теперь я хотел бы присвоить значение определенной ячейке, например, в строке C и столбце x. То есть, я хочу выполнить следующую трансформацию:

     x    y             x    y
A  NaN  NaN        A  NaN  NaN
B  NaN  NaN   ⟶   B  NaN  NaN
C  NaN  NaN        C   10  NaN

Для этого я использую следующий код:

df.xs('C')['x'] = 10

Однако содержимое df не изменилось. DataFrame до сих пор содержит только NaN. Как мне добиться желаемого результата?

5 ответ(ов)

1

Вы также можете использовать условный поиск с помощью .loc, как показано здесь:

df.loc[df[<имя_колонки_для_проверки>] == <условие>, [<имя_колонки_для_добавления>]] = <значение_для_добавления>

где <имя_колонки_для_проверки> — это колонка, к которой вы хотите применить переменную <условие>, а <имя_колонки_для_добавления> — это колонка, в которую вы хотите добавить значение (это может быть новая колонка или уже существующая). <значение_для_добавления> — это значение, которое вы хотите добавить в указанную колонку/строку.

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

0

Попробуйте использовать df.loc[row_index, col_indexer] = value.

0

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

df.ix['x', 'C'] = 10

Использование 'цепочечного индексирования' (df['x']['C']) может привести к проблемам.

Смотрите:

0

Чтобы задать значения в DataFrame, используйте следующий код:

df.at[0, 'clm1'] = 0
  • Это самый быстрый рекомендованный метод для задания переменных.
  • Методы set_value и ix устарели.
  • Нет предупреждений, в отличие от iloc и loc.
0

Я бы предложил следующий способ:

df.loc[index_position, "column_name"] = some_value

Для изменения нескольких ячеек одновременно можно использовать такой синтаксис:

df.loc[start_idx_pos: end_idx_pos, "column_name"] = some_value
Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь