Как в pandas добавить столбец с данными из списка?

Есть два файла:

  1. input_csv_file, в котором есть столбец ['index']
  2. input_file_w_address, который представляет собой список из кортежей: [(индекс1, адрес1), (индекс2, адрес2)], т.е. на [0] месте стоит индекс, на [-1] - адрес

Читаю файлы: (в txt применяю eval, чтобы файл в переменную зашел именно списком кортежей, а не строкой)

text_input = open(input_file_w_address, 'r').read()
text_input = eval(text_input)
csv_input = pd.read_csv(input_csv_file)

затем хочу:

  1. посмотреть в csv_input
  2. взять каждое i-тое значение из столбца 'index'
  3. в списке взять каждый y-тый элемент (это будет каждый кортеж)
  4. в нем посмотреть на y[0]-элемент и сравнить с i
  5. если они равны, взять y[-1] и записать его в новый столбец
csv_input['new_address'] = None
for i in csv_input['index']:
    for i in range(csv_input.shape[0]):
        for y in text_input:
            text_input_index = y[0]
            text_input_address = y[-1]
            if i == text_input_index:
                csv_input['new_address'] = text_input_address

у меня не получилось. подскажите, где ошибка?


Ответы (1 шт):

Автор решения: Sergey Ilyin

все оказалось гораздо проще:

  1. Нам нужно взять список кортежей
  2. Определить индексы и (в моем случае) адреса
  3. Использовать специальную конструкцию pandas: df.loc
for y in text_input:
    text_input_index = y[0]
    text_input_address = y[-1]
    csv_input.loc[csv_input['index'] == int(text_input_index),
                  'new_address'] = text_input_address
→ Ссылка