Ответ 1
Простейший путь, вероятно, list(dt.T.itertuples())
(где dt
- ваш фрейм данных). Это генерирует список кортежей.
У меня есть объект 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]]
Как я могу это сделать? Спасибо за помощь.
Простейший путь, вероятно, list(dt.T.itertuples())
(где dt
- ваш фрейм данных). Это генерирует список кортежей.
@BrenBarn ответ выше дает список кортежей, а не список списка, как задано в вопросе. Я специально нуждался в списке списков, чтобы иметь возможность записывать dataframe в spread с помощью DataNitro. Адаптировав приведенный выше пример со списком:
[list(x) for x in dt.T.itertuples()]
Это дает результат по мере необходимости
Строго говоря, если вы хотите вложенные списки (а не список кортежей), вы можете сделать
df.values.tolist()
поскольку df.values является массивом numpy. Это даст вам список списков по запросу:
[[0.0001313652121930252, 3.5915356549999985e-05],
[3.5915356549999985e-05, 0.00011634321240684215]]
Мой наивный подход будет использовать 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)
Старый вопрос, который я знаю, но это имеет для меня больше смысла, чем эти другие ответы.
Если это ваш 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]]