【问题标题】:Creating a pandas dataframe from a dictionary从字典创建熊猫数据框
【发布时间】:2014-11-22 08:14:48
【问题描述】:

我想从dict 创建一个DataFrame,其中dict keys 将是列名,dict values 将是行。我正在尝试使用pandas.DataFrame.from_dict() 来转换我的字典。这是我的代码:

import pandas as pd
import datetime

current_time1 = datetime.datetime.now()
record_1 = {'Date':current_time1, 'Player':'John','Difficulty':'hard', 'Score':0}
df = pd.DataFrame.from_dict(record_1, orient='columns')
display(df)

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-4-597ef27e82c8> in <module>()
      1 record_1 = {'Date':current_time1, 'Player':'John','Difficulty':'hard', 'Score':0}
----> 2 df = pd.DataFrame.from_dict(record_1, orient='columns')
      3 display(df)

C:\Users\Jason\AppData\Local\Enthought\Canopy32\User\lib\site-packages\pandas\core\frame.pyc in from_dict(cls, data, orient, dtype)
    635             raise ValueError('only recognize index or columns for orient')
    636 
--> 637         return cls(data, index=index, columns=columns, dtype=dtype)
    638 
    639     def to_dict(self, outtype='dict'):

C:\Users\Jason\AppData\Local\Enthought\Canopy32\User\lib\site-packages\pandas\core\frame.pyc in __init__(self, data, index, columns, dtype, copy)
    201                                  dtype=dtype, copy=copy)
    202         elif isinstance(data, dict):
--> 203             mgr = self._init_dict(data, index, columns, dtype=dtype)
    204         elif isinstance(data, ma.MaskedArray):
    205             import numpy.ma.mrecords as mrecords

C:\Users\Jason\AppData\Local\Enthought\Canopy32\User\lib\site-packages\pandas\core\frame.pyc in _init_dict(self, data, index, columns, dtype)
    325 
    326         return _arrays_to_mgr(arrays, data_names, index, columns,
--> 327                               dtype=dtype)
    328 
    329     def _init_ndarray(self, values, index, columns, dtype=None,

C:\Users\Jason\AppData\Local\Enthought\Canopy32\User\lib\site-packages\pandas\core\frame.pyc in _arrays_to_mgr(arrays, arr_names, index, columns, dtype)
   4618     # figure out the index, if necessary
   4619     if index is None:
-> 4620         index = extract_index(arrays)
   4621     else:
   4622         index = _ensure_index(index)

C:\Users\Jason\AppData\Local\Enthought\Canopy32\User\lib\site-packages\pandas\core\frame.pyc in extract_index(data)
   4657 
   4658         if not indexes and not raw_lengths:
-> 4659             raise ValueError('If using all scalar values, you must must pass'
   4660                              ' an index')
   4661 

ValueError: If using all scalar values, you must must pass an index

我不明白这个错误,在the docs 中对于pandas.DataFrame.from_dict 没有索引参数。另外,我认为如果未提供索引pandas 将使用 1..x?如何传递索引?

补充信息:最后我想使用日期列作为索引。

【问题讨论】:

    标签: python python-2.7 pandas


    【解决方案1】:

    如果每个 dict 代表一行,您可以将 dicts 列表 传递给 pd.DataFrame:

    In [37]: pd.DataFrame([record_1])
    Out[37]: 
                            Date Difficulty Player  Score
    0 2014-09-27 08:26:16.950192       hard   John      0
    

    【讨论】:

      猜你喜欢
      • 2016-01-14
      • 1970-01-01
      • 1970-01-01
      • 2019-11-12
      • 2019-01-11
      • 2018-02-26
      • 1970-01-01
      相关资源
      最近更新 更多