我有一个类似于下面的元组列表:
[(date1, ticker1, value1),(date1, ticker1, value2),(date1, ticker1, value3)]
我想将其转换为包含index=date1
,columns=ticker1
和values = values
的DataFrame。这样做的最佳方式是什么?
编辑:
我的最终目标是创建一个日期时间指数等于date1的数据框,其中的值位于标有' ticker'的列中:
df = pd.DataFrame(tuples, index=date1)
现在使用以下内容生成元组:
tuples=list(zip(*prc_path))
其中prc_path是一个带形状(1000,1)的numpy.ndarray
答案 0 :(得分:31)
我认为这就是你想要的:
>>> data = [('2013-01-16', 'AAPL', 1),
('2013-01-16', 'GOOG', 1.5),
('2013-01-17', 'GOOG', 2),
('2013-01-17', 'MSFT', 4),
('2013-01-18', 'GOOG', 3),
('2013-01-18', 'MSFT', 3)]
>>> df = pd.DataFrame(data, columns=['date', 'ticker', 'value'])
>>> df
date ticker value
0 2013-01-16 AAPL 1.0
1 2013-01-16 GOOG 1.5
2 2013-01-17 GOOG 2.0
3 2013-01-17 MSFT 4.0
4 2013-01-18 GOOG 3.0
5 2013-01-18 MSFT 3.0
>>> df.pivot('date', 'ticker', 'value')
ticker AAPL GOOG MSFT
date
2013-01-16 1 1.5 NaN
2013-01-17 NaN 2.0 4
2013-01-18 NaN 3.0 3