Ключевые способы трансформации таблиц Pandas в иные структуры
В ходе обработки массивов данных зачастую приходится преобразовывать датафреймы в иные объекты для совместимости с другими модулями. Рассмотрим основные структуры на примере следующей таблицы:
import pandas as pd df = pd.DataFrame([['id1', 'key_new1','key_old1'], ['id2','key_new2','key_old2'], ['id3', 'key_new3','key_old3'], ['id4','key_new4','key_old4']], columns=['id', 'new', 'old']) df
NumPy массив
Хоть многие модули и поддерживают Pandas, стандартом де-факто для работы с данными являются NumPy массивы, которые совместимы со всеми уважающими себя сторонними библиотеками. Для такого преобразования следует вызвать свойство values или метод to_numpy:
df.values df.to_numpy()
Словарь
Допустим, вы хотите создать словарик из ключей в колонке old и значений в new. Проще всего для этих целей преобразовать массив в серию с ключами по индексу. В нашем случае следует создать срез из нужных столбцов, установить ключевой в индексы, выбрать другой и вызвать метод to_dict:
df[['new', 'old']].set_index('old')['new'].to_dict()
Список
Списки, как и словари являются встроенными типами в Python, поэтому вопрос преобразования в них обеспечит совместимость с любой библиотекой. На практике в списки приходится преобразовывать значения некоторой колонки. Это можно сделать методом to_list:
df['id'].to_list()
Кортеж
Не редко приходится выгружать кортежи из значений нескольких колонок (например, чтобы проверить на пересечения с другой структурой). Для этих целей я пользуюсь комбинацией метода apply и функции tuple для каждой пары:
df[['old', 'new']].apply(lambda x: tuple(x), axis=1).to_list() df[['old', 'new']].apply(lambda x: tuple(x), axis=1).unique()