Замена всех значений в столбце Pandas без условий - PullRequest
0 голосов
/ 29 сентября 2018

У меня есть фрейм данных Pandas со столбцом, полным значений, которые я хочу заменить на другой, без условий.

Для целей этого вопроса давайте предположим, что я не знаю, как долго этот столбец иЯ не хочу перебирать его значения.

Использование .replace() нецелесообразно, так как я не знаю, какие значения находятся в этом столбце: я хочу заменить все значения без условий.

Использование df.loc[<row selection>, <column selection>] нецелесообразно, поскольку отсутствует логика выбора строк: я хочу, чтобы все строки и просто записать True (как в data.loc[True, 'ColumnName'] = new_value), возвращает KeyError(True,).Я попытался data.loc[1, 'ColumnName'] = new_value, и это работает, но это действительно выглядит как дерьмовое решение.

Если я знаю len() из data['ColumnName'], я мог бы создать массив такого размера, заполненный столько раз, сколько я new_value и просто замените столбец на этот массив.10 строк кода, чтобы сделать что-то более простое, чем то, что требует 1 строки кода (делает это условно): это тоже не хорошо.

Как я могу сказать Pandas в 1 строку: все значения в ColumnNameсейчас new_value?Я отказываюсь верить, что нет никакого способа сказать Пандам, чтобы они не беспокоили меня условиями.

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018
import pandas as pd

df = pd.DataFrame(
   {'num1'        : [3, 5, 9, 9, 14, 1],
    'num2'        : [3, 5, 9, 9, 14, 1]},
     index=[0, 1, 2, 3, 4, 5])
print(df)
print('\n')
df['num1'] = 100
print(df)
df['num1'] = 'Hi'
print('\n')
print(df)

Выход

  num1  num2
0     3     3
1     5     5
2     9     9
3     9     9
4    14    14
5     1     1


   num1  num2
0   100     3
1   100     5
2   100     9
3   100     9
4   100    14
5   100     1


  num1  num2
0   Hi     3
1   Hi     5
2   Hi     9
3   Hi     9
4   Hi    14
5   Hi     1
0 голосов
/ 29 сентября 2018

Как я объяснил в комментарии, вам не нужно создавать массив.Допустим, у вас есть df:

  InvoiceNO Month  Year Size
0         1     1     2    7
1         2     1     2    8
2         3     2     2   11
3         4     3     2    9
4         5     7     2  8.5

.. и вы хотите изменить все значения в InvoiceNO на 1234:

df['InvoiceNO'] = 1234

Вывод:

   InvoiceNO Month  Year Size
0       1234     1     2    7
1       1234     1     2    8
2       1234     2     2   11
3       1234     3     2    9
4       1234     7     2  8.5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...