Как в pandas добавить столбец с данными из списка?
Есть два файла:
- input_csv_file, в котором есть столбец ['index']
- 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)
затем хочу:
- посмотреть в csv_input
- взять каждое i-тое значение из столбца 'index'
- в списке взять каждый y-тый элемент (это будет каждый кортеж)
- в нем посмотреть на y[0]-элемент и сравнить с i
- если они равны, взять 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
→ Ссылка
все оказалось гораздо проще:
- Нам нужно взять список кортежей
- Определить индексы и (в моем случае) адреса
- Использовать специальную конструкцию 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