Python Pandas dict 到数据框(不工作)

Posted

技术标签:

【中文标题】Python Pandas dict 到数据框(不工作)【英文标题】:Python Pandas dict to dataframe (not working) 【发布时间】:2016-12-20 19:53:35 【问题描述】:

我使用 Spyder 作为 Python IDE。我已经通过 API 下载了数据。 API 只允许将数据作为“dict”类型下载。 “Dict”类型有 3 个级别,即 Dict、Unicode、Dataframe。 我目前正在尝试将数据帧中的信息提取到一个单独的数据帧变量我打算导出到 SQLite。但是,我无法执行此操作,因为信息保存在“Dict”类型下并使用命令

frame4=pd.DataFrame.from_dict(response)

返回以下错误信息:

frame4=pd.DataFrame(response) Traceback(最近一次调用最后一次):

文件“”,第 1 行,在 frame4=pd.DataFrame(响应)

文件 “/Users/Sebster/anaconda/lib/python2.7/site-packages/pandas/core/frame.py”, 第 224 行,在 init 中 mgr = self._init_dict(数据、索引、列、dtype=dtype)

文件 “/Users/Sebster/anaconda/lib/python2.7/site-packages/pandas/core/frame.py”, 第 360 行,在 _init_dict 中 return _arrays_to_mgr(arrays, data_names, index, columns, dtype=dtype)

文件 “/Users/Sebster/anaconda/lib/python2.7/site-packages/pandas/core/frame.py”, 第 5236 行,在 _arrays_to_mgr arrays = _homogenize(arrays, index, dtype)

文件 “/Users/Sebster/anaconda/lib/python2.7/site-packages/pandas/core/frame.py”, 第 5546 行,在 _homogenize raise_cast_failure=False)

文件 “/Users/Sebster/anaconda/lib/python2.7/site-packages/pandas/core/series.py”, 第 2922 行,在 _sanitize_array subarr = _asarray_tuplesafe(data, dtype=dtype)

文件 "/Users/Sebster/anaconda/lib/python2.7/site-packages/pandas/core/common.py", 第 1407 行,在 _asarray_tuplesafe 中 result[:] = [tuple(x) for x in values]

ValueError: 无法将大小为 17 的序列复制到数组轴 维度 10

字典的内容,即dict(response) 给出以下输出:

u'allowance': u'allowanceExpiry': 554347,
  u'remainingAllowance': 9960,
  u'totalAllowance': 10000,
 u'instrumentType': u'CURRENCIES',
 u'prices':                          bid                                 ask           \
                         Open     High      Low    Close     Open     High   
 DateTime                                                                    
 2016:08:12-21:50:00  11163.7  11164.6  11163.7  11164.1  11165.2  11165.6   
 2016:08:12-21:51:00  11164.2  11164.8  11163.7  11164.7  11165.7  11166.2   
 2016:08:12-21:52:00  11164.5  11165.3  11164.4  11165.1  11166.0  11166.6   
 2016:08:12-21:53:00  11165.0  11165.8  11164.3  11164.5  11166.5  11167.2   
 2016:08:12-21:54:00  11164.6  11165.4  11164.3  11164.7  11166.1  11166.9   
 2016:08:12-21:55:00  11164.6  11165.8  11164.1  11165.1  11166.1  11167.2   
 2016:08:12-21:56:00  11165.3  11165.3  11163.9  11163.9  11166.8  11166.8   
 2016:08:12-21:57:00  11164.1  11164.9  11163.4  11164.6  11165.6  11166.4   
 2016:08:12-21:58:00  11164.5  11165.2  11164.0  11164.9  11165.1  11166.2   
 2016:08:12-21:59:00  11161.3  11162.8  11157.9  11159.2  11166.3  11167.8   

                                       spread                  last        \
                          Low    Close   Open High  Low Close  Open  High   
 DateTime                                                                   
 2016:08:12-21:50:00  11164.7  11165.6    1.5  1.0  1.0   1.5  None  None   
 2016:08:12-21:51:00  11165.2  11166.2    1.5  1.4  1.5   1.5  None  None   
 2016:08:12-21:52:00  11165.8  11166.6    1.5  1.3  1.4   1.5  None  None   
 2016:08:12-21:53:00  11165.8  11166.0    1.5  1.4  1.5   1.5  None  None   
 2016:08:12-21:54:00  11165.8  11166.2    1.5  1.5  1.5   1.5  None  None   
 2016:08:12-21:55:00  11165.6  11166.6    1.5  1.4  1.5   1.5  None  None   
 2016:08:12-21:56:00  11165.4  11165.4    1.5  1.5  1.5   1.5  None  None   
 2016:08:12-21:57:00  11164.3  11165.2    1.5  1.5  0.9   0.6  None  None   
 2016:08:12-21:58:00  11164.6  11165.5    0.6  1.0  0.6   0.6  None  None   
 2016:08:12-21:59:00  11162.9  11164.2    5.0  5.0  5.0   5.0  None  None   


                       Low Close Volume  
 DateTime                                
 2016:08:12-21:50:00  None  None     37  
 2016:08:12-21:51:00  None  None     45  
 2016:08:12-21:52:00  None  None     46  
 2016:08:12-21:53:00  None  None     80  
 2016:08:12-21:54:00  None  None     45  
 2016:08:12-21:55:00  None  None     58  
 2016:08:12-21:56:00  None  None     35  
 2016:08:12-21:57:00  None  None    115  
 2016:08:12-21:58:00  None  None     60  
 2016:08:12-21:59:00  None  None    162  

有人可以帮助我将数据帧从 Dict 变量中提取到单独的数据帧中吗?

【问题讨论】:

请发布字典 (response) 并尝试使用:pd.DataFrame(response) 你好丹尼尔,我之前尝试过 pd.DataFrame(response) 语句。它返回相同的错误消息。 【参考方案1】:

查看您的response dict - 键prices 的值似乎是一个DataFrame,因此无需再次构造它:

frame4 = response['prices']

或者简单地说:

import sqlalchemy

engine = sqlalchemy.create_engine('sqlite:///path/to/your_db.sqlite')
response['prices'].to_sql('table_name', engine, if_exists='replace')

【讨论】:

以上是关于Python Pandas dict 到数据框(不工作)的主要内容,如果未能解决你的问题,请参考以下文章

python pandas数据框列转换为dict键和值

将 JSON 读取到 pandas 数据框 - ValueError:将 dicts 与非系列混合可能会导致排序不明确

如何用dict pandas python替换分组数据框

来自 Python 字典的 PySpark 数据框,没有 Pandas

Pandas 数据框到 dict 的 dict

pandas 数据框到 dict [重复]