Мне возвращается список кортежей в таком формате:
[date1, date2, date3]
[ticker1, ticker2, ticker3]
[value1, value2, value3]
Я хочу преобразовать его в фреймворк pandas, где индекс - это даты, столбцы - тикеры, а данные - значения.
То, что вы здесь показали, не является списком кортежей. Это три отдельных списка. Не могли бы вы подробнее рассказать о данных, с которыми вы работаете?
Это не список кортежей, это список списков (по крайней мере, вы дали нам поверить).






Series и unstacklst = [['date1', 'date2', 'date3'],
['ticker1', 'ticker2', 'ticker3'],
['value1', 'value2', 'value3']]
pd.Series(lst[-1], lst[:2]).unstack()
ticker1 ticker2 ticker3
date1 value1 None None
date2 None value2 None
date3 None None value3
defaultdictfrom collections import defaultdict
lst = [['date1', 'date2', 'date3'],
['ticker1', 'ticker2', 'ticker3'],
['value1', 'value2', 'value3']]
dd = defaultdict(dict)
for d, t, v in zip(*lst):
dd[t][d] = v
pd.DataFrame(dd)
ticker1 ticker2 ticker3
date1 value1 None None
date2 None value2 None
date3 None None value3
Использование pivot
df=pd.DataFrame(lst).T
df.pivot(*df)
1 ticker1 ticker2 ticker3
0
date1 value1 None None
date2 None value2 None
date3 None None value3
Идея распаковки нравится, супер лаконично.
(lambda d: d.pivot(*d))(pd.DataFrame(lst).T) ИЛИ pd.DataFrame(lst).T.pipe(lambda d: d.pivot(*d))values = [(1, 0, 1), (2, 9, 4), (3, 10, 4), (9, 22, 30)]
data_frame = pd.DataFrame(values)
print(data_frame)
Мне нужно было бы увидеть ваш конкретный код, потому что то, что вы обрисовали, похоже на список списков, а не список кортежей. Но теоретически, если бы у вас был список кортежей, вы бы создали из него DataFrame. Вот ваш результат:
0 1 2
0 1 0 1
1 2 9 4
2 3 10 4
3 9 22 30
Это ответ на другой вопрос, не так ли?
@coldspeed Нет. Если у вас есть другой вопрос, вы можете задать его.
Спасибо, но я не думаю, что вы поняли. Я думаю, что ваш ответ решает другую проблему, которую OP не задавал.
Можете ли вы показать нам (визуально), что вы хотите получить в качестве желаемого результата?