Подтвердить что ты не робот

Как сгенерировать список из pandas DataFrame с именами столбцов и столбцами?

У меня есть объект pandas dataframe, который выглядит следующим образом:

   one  two  three  four  five
0    1    2      3     4     5
1    1    1      1     1     1

Я хотел бы сгенерировать список объектов списков, где первым элементом является метка столбца, а остальные значения списка - значения данных столбца:

nested_list = [['one', 1, 1]
               ['two', 2, 1]
               ['three', 3, 1]
               ['four', 4, 1]
               ['five', 5, 1]]

Как я могу это сделать? Спасибо за помощь.

4b9b3361

Ответ 1

Простейший путь, вероятно, list(dt.T.itertuples()) (где dt - ваш фрейм данных). Это генерирует список кортежей.

Ответ 2

@BrenBarn ответ выше дает список кортежей, а не список списка, как задано в вопросе. Я специально нуждался в списке списков, чтобы иметь возможность записывать dataframe в spread с помощью DataNitro. Адаптировав приведенный выше пример со списком:

[list(x) for x in dt.T.itertuples()]

Это дает результат по мере необходимости

Ответ 3

Строго говоря, если вы хотите вложенные списки (а не список кортежей), вы можете сделать

df.values.tolist()

поскольку df.values ​​является массивом numpy. Это даст вам список списков по запросу:

[[0.0001313652121930252, 3.5915356549999985e-05], 
 [3.5915356549999985e-05, 0.00011634321240684215]]

Ответ 4

Мой наивный подход будет использовать iteritems с 'll' как список списков и l как один список.

df = DataFrame({'one':[1,1], 'two':[2,1], 'three':[3,1], 'four':[3,1] })

ll = []

for idx,row in df.iteritems():
    l = row.values.tolist()
    l.insert(0,idx)
    ll.append(l)

Ответ 5

Старый вопрос, который я знаю, но это имеет для меня больше смысла, чем эти другие ответы.

Если это ваш dataframe:

df = pd.DataFrame({'one': [1, 1], 'three': [3, 1], 'four': [4, 1],
           'five': [5, 1], 'two': [2, 1]},
          columns=['one', 'two', 'three', 'four', 'five'])

Сделайте это:

df.T.reset_index().values.tolist()

Результат

[['one', 1, 1], ['two', 2, 1], ['three', 3, 1], ['four', 4, 1], ['five', 5, 1]]