Arhn - архитектура программирования

Преобразование одной строки DataFrame в плоский список

Я новичок в Python, и поэтому у меня возникают проблемы с преобразованием строки в DataFrame в плоскую list. Для этого я использую следующий код:

Игрушка DataFrame:

import pandas as pd
d = {
     "a": [1, 2, 3, 4, 5],
     "b": [9, 8, 7, 6, 5],
     "n": ["a", "b", "c", "d", "e"]
}

df = pd.DataFrame(d)

Мой код:

df_note = df.loc[df.n == "d", ["a", "b"]].values #convert to array
df_note = df_note.tolist() #convert to nested list
df_note = reduce(lambda x, y: x + y, df_note) #convert to flat list

Мне этот код кажется одновременно грубым и неэффективным. Тот факт, что я конвертирую в array перед list, является причиной проблемы, т.е. list должен быть вложенным. Несмотря на это, я не могу найти средства преобразования строки непосредственно в список. Любой совет?

Этот вопрос не является обманом этого. В моем случае я хочу, чтобы список был плоским.

12.12.2015

Ответы:


1

Вы почти закончили, на самом деле просто используйте flatten вместо reduce, чтобы разложить массив (вместо разложения списка), и цепочку операций, чтобы иметь один вкладыш:

df.loc[df.n == "d", ['a','b']].values.flatten().tolist()
#[4, 6]
12.12.2015
  • Общее решение (менее конкретное для примера): df.loc[index, :].values.flatten().tolist(), где index — это индекс строки кадра данных pandas, которую вы хотите преобразовать. 25.06.2021

  • 2

    Вы получаете вложенный список, потому что выбираете вложенный фрейм данных.

    Для этого требуется строка, которую можно преобразовать в список без выравнивания:

    df.loc[0, :].values.tolist()
    [1, 9, 'a']
    

    Как насчет нарезки списка:

    df_note.values.tolist()[0]
    [4, 6]
    

    Значения хранятся в массиве NumPy. Так вы их не конвертируете. Панды используют много NumPy под капотом. Доступ к атрибуту df_note.values — это просто другое имя для части фрейма данных.

    12.12.2015

    3

    Я предполагаю, что вы явно выбираете столбцы a и b только для того, чтобы избавиться от столбца n, который вы используете исключительно для выбора нужной строки.

    В этом случае вы также можете сначала использовать столбец n в качестве индекса, используя set_index:

    >>> dfi = df.set_index('n')
    >>> dfi.ix['d'].tolist()
    [4, 6]
    
    12.12.2015
  • возможно, OP имеет больше столбцов и хочет подмножить только a и b, если вышеизложенное не работает с более общим фреймом данных. (но все же хороший подход) 12.12.2015
  • Вы правы, мой ответ был основан на моей интерпретации того, что пытался сделать ОП, и, следовательно, менее общий. Я отредактировал свой ответ, чтобы уточнить это. 12.12.2015
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..