@sunsexsurf
IT & creative

Как в 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
4/ если они равны, взять y[-1] и записать его в новый столбец

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


у меня не получилось. подскажите, где ошибка?
  • Вопрос задан
  • 400 просмотров
Решения вопроса 2
@sunsexsurf Автор вопроса
IT & creative
все оказалось гораздо проще:

  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
Ответ написан
Комментировать
LazyTalent
@LazyTalent
Data Engineer, Freelancer
https://pandas.pydata.org/pandas-docs/stable/user_...

import pandas as pd

df_input = pd.read_csv('input.csv')
df_addresses = pd.read_csv('address.csv', columns=['index', 'address'])

df = pd.merge(df_input, df_addresses, on='index', how='outer')
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы