从字典创建 Pandas 数据帧

14

我想从一个dict创建一个DataFrame,其中dictkeys将成为列名,dictvalues将成为行。 我试图使用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

我不理解这个错误,在文档中,pandas.DataFrame.from_dict没有索引参数。此外,我认为如果没有提供索引,pandas会使用1..x?我该如何传递索引?

额外信息:最终我想使用日期列作为索引。

1个回答

22
如果每个字典表示一行,你可以将一个字典列表传递给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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接