Как назначить значения в списке столбцу / строке в кадре данных? - PullRequest
0 голосов
/ 18 октября 2019

Как назначить значения в списке столбцу / строке в кадре данных python?

Я мог сделать только наоборот с командой: list_name = df.iloc[x, y]. Однако, когда я попытался ввести команду df.iloc[x, y] = list_name, мне не удалось преобразовать значения из list_name в df.iloc[x, y].

В этом случае, какая должна быть правильная команда для преобразования значений в list_name в df.iloc[x, y]?

1 Ответ

0 голосов
/ 18 октября 2019

К сожалению, индексирование iloc не предназначено для настройки столь же универсальным способом, как для получения. Однако есть некоторый обходной путь, если вы хотите, чтобы ваша строка x и столбец y были динамическими, как в вашем примере.

Для следующего я использовал pandas.Dataframe пример документации , где мы начинаем с кадра данных, как показано ниже.

my_dict = [{'a': 1, 'b': 2, 'c': 3, 'd': 4},
          {'a': 100, 'b': 200, 'c': 300, 'd': 400},
          {'a': 1000, 'b': 2000, 'c': 3000, 'd': 4000 }]

df = pandas.DataFrame(my_dict)

Шаг 1: Получить строку

Очень просто,Вы можете получить свой ряд, взяв df.iloc[x]. Если бы у вас было x = 1, в приведенном выше примере мы получили бы:

> df.iloc[x]
a    100
b    200
c    300
d    400

Когда у нас есть строка, подобная этой, мы можем получить это значение 300, используя индекс 'c'.

> df.iloc[x]['c']
300

Если все, что у вас есть, это индекс столбца, вам сначала нужно получить это имя.

Шаг 2: Получить имя столбца

Toпреобразуйте ваш индекс y в имя столбца, мы можем использовать свойство dataframe axes , как показано ниже:

> y = 2
> df.axes[1][y]
c

Шаг 3: Поместите еговместе

Теперь, если мы хотим использовать x и y для ссылки на конкретную запись в кадре данных, мы можем сделать это, сначала получив row, а затем column, например:

row = df.iloc[x]
column = df.axes[1][y]
row[column] = desired_value

Или, если вы хотите написать его в одну строку:

df.iloc[x][df.axes[1][y]]

Полный пример

Вот полный пример этого в действии.

import pandas

x = 1
y = 2

my_dict = [{'a': 1, 'b': 2, 'c': 3, 'd': 4},
          {'a': 100, 'b': 200, 'c': 300, 'd': 400},
          {'a': 1000, 'b': 2000, 'c': 3000, 'd': 4000 }]

df = pandas.DataFrame(my_dict)

desired_value = 999

row = df.iloc[x]
column = df.axes[1][y]
row[column] = desired_value

print(df)

Это оператор печати в конце дает нам:

      a     b     c     d
0     1     2     3     4
1   100   200   999   400
2  1000  2000  3000  4000

Обратите внимание на 999, которое мы установили с row[column] = desired_value.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...