Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 元组到数据帧转换的列表_Python_List_Pandas_Tuples - Fatal编程技术网

Python 元组到数据帧转换的列表

Python 元组到数据帧转换的列表,python,list,pandas,tuples,Python,List,Pandas,Tuples,我有一个类似于下面的元组列表: [(date1, ticker1, value1),(date1, ticker1, value2),(date1, ticker1, value3)] 我想将其转换为具有index=date1、columns=ticker1和values=values的数据帧。最好的方法是什么 编辑: 我的最终目标是创建一个datetimeindex等于date1的数据帧,其值位于标记为“ticker”的列中: df = pd.DataFrame(tuples, index=

我有一个类似于下面的元组列表:

[(date1, ticker1, value1),(date1, ticker1, value2),(date1, ticker1, value3)]
我想将其转换为具有
index=date1
columns=ticker1
values=values
的数据帧。最好的方法是什么

编辑:

我的最终目标是创建一个datetimeindex等于date1的数据帧,其值位于标记为“ticker”的列中:

df = pd.DataFrame(tuples, index=date1)
此时,将使用以下命令生成元组:

tuples=list(zip(*prc_path))

其中prc_路径是一个具有形状(1000,1)的numpy.ndarray

我想这就是您想要的:

>>> 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

传统的做法是给出一个输入和期望输出的小例子,人们可以复制和粘贴(否则,想要证明他的方法有效的人需要花时间发明自己的方法)。修改后的编辑更好吗?谢谢!数据的设置与您的数据完全相同,其中tuples=[(date,SPY,price),(date,SPY,price)等]但是当我创建数据帧时,我得到以下错误:AssertionError:3列传递,传递的数据有1000列。我需要重塑吗?如果需要,如何重塑?这正是解决我问题的方法,但我不明白为什么有些列最终成为对象而不是字符串。关于如何更好地理解字符串的任何想法最终都可能会成为对象?这对我的问题不起作用,但它确实起了作用:pd.DataFrame.from_records(data,columns=['date','ticker','value'])