• Автор записи:
  • Рубрика записи:Pandas
  • Время чтения:3 минут чтения
  • Комментарии к записи:0 комментариев

Чтобы преобразовать 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()

Самый простой способ преобразовать 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, показан на снимке экрана ниже.

DataFrame в 2D-список с использованием метода df.values.tolist()

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.

DataFrame в 2D-список с использованием функции to_dict()

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, можно увидеть на снимке экрана ниже.

С помощью функции apply()

Добавить комментарий