Чтобы преобразовать DataFrame Pandas в список в Python, можно использовать различные методы: метод df.values.tolist() для прямого преобразования в список списков, функция to_dict() для создания списка словарей, List Comprehension для настраиваемых структур списков и функцию apply() для применения определенных преобразований к каждой строке, обеспечивая гибкость и эффективность процесса преобразования.
Примечание. Чтобы подтвердить, что все, что мы получаем на выходе, является двумерным списком, я добавил функцию ко всем методам: если функция возвращает True, это означает, что мы получаем двумерный список в Python.
def is_2d_list(output): if not isinstance(output, list): return False for element in output: if not isinstance(element, list): return False return True
- 1. DataFrame в 2D-список с использованием метода df.values.tolist()
- 2. DataFrame в 2D-список с использованием функции to_dict()
- 3. С использованием понимания списка
- 4. С помощью функции apply()
1. DataFrame в 2D-список с использованием метода df.values.tolist()
Самый простой способ преобразовать DataFrame Pandas в список в Python — использовать атрибут значений, за которым следует метод tolist(). Этот метод преобразует DataFrame в список списков, где каждый внутренний список представляет строку в DataFrame.
import pandas as pd def is_2d_list(output): if not isinstance(output, list): return False for element in output: if not isinstance(element, list): return False return True df = pd.DataFrame({ 'City': ['New York', 'Los Angeles', 'Chicago'], '2018': [8398748, 3990456, 2705994], '2019': [8336817, 3979576, 2695598] }) list_of_lists = df.values.tolist() print(list_of_lists) check = is_2d_list(list_of_lists) print(check)
Вывод: определенная функция подтвердит, что результат, который мы получаем, представляет собой список списков или 2D-список в Python.
[['New York', 8398748, 8336817], ['Los Angeles', 3990456, 3979576], ['Chicago', 2705994, 2695598]] True
Вывод кода, выполненного в Pycharm, показан на снимке экрана ниже.
2. DataFrame в 2D-список с использованием функции to_dict()
Если мы предпочитаем иметь список словарей, в котором каждый словарь представляет строку с именами столбцов в качестве ключей, мы можем использовать метод to_dict(‘records’).
import pandas as pd def is_2d_list(output): if not isinstance(output, list): return False for element in output: if not isinstance(element, list): return False return True df = pd.DataFrame({ 'State': ['California', 'Texas', 'Florida'], 'Capital': ['Sacramento', 'Austin', 'Tallahassee'] }) list_of_dicts = df.to_dict('records') list_of_lists = [[d['State'], d['Capital']] for d in list_of_dicts] print(list_of_lists) check = is_2d_list(list_of_lists) print(check)
Выход:
[['California', 'Sacramento'], ['Texas', 'Austin'], ['Florida', 'Tallahassee']] True
Ниже приведен снимок экрана, показывающий результат выполнения кода в редакторе PyCharm.
3. С использованием понимания списка
Понимание списков предлагает гибкий способ перебора строк DataFrame и преобразования их в списки в Python. Этот метод обладает широкими возможностями настройки, что позволяет выполнять более сложные преобразования.
import pandas as pd def is_2d_list(output): if not isinstance(output, list): return False for element in output: if not isinstance(element, list): return False return True df = pd.DataFrame({ 'University': ['Harvard', 'Yale', 'Princeton'], 'Founded': [1636, 1701, 1746] }) list_of_lists = [list(row) for row in df.values] print(list_of_lists) check = is_2d_list(list_of_lists) print(check)
Выход:
[['Harvard', 1636], ['Yale', 1701], ['Princeton', 1746]] True
На следующем снимке экрана показан результат после запуска кода в редакторе PyCharm.
4. С помощью функции apply()
Метод apply() применяет указанную функцию вдоль оси DataFrame. Его можно использовать для преобразования каждой строки в список в Python, обеспечивая баланс между простотой и гибкостью для более сложных преобразований.
import pandas as pd def is_2d_list(output): if not isinstance(output, list): return False for element in output: if not isinstance(element, list): return False return True df = pd.DataFrame({ 'State': ['California', 'Texas', 'New York'], 'Senators': [2, 2, 2], 'Representatives': [53, 36, 27] }) list_of_lists = df.apply(lambda x: x.tolist(), axis=1).tolist() print(list_of_lists) check = is_2d_list(list_of_lists) print(check)
Выход:
[['California', 2, 53], ['Texas', 2, 36], ['New York', 2, 27]] True
Результат выполнения кода, выполненного в PyCharm, можно увидеть на снимке экрана ниже.