Подтвердить что ты не робот

Создание DataFrame pandas из словаря

Я хотел бы создать DataFrame из dict, где 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

Я не понимаю ошибку, docs для pandas.DataFrame.from_dict нет аргумента индекса. Кроме того, я думал, что если индекс не указан, pandas будет использовать 1..x? Как передать индекс?

Дополнительная информация: я хотел бы использовать столбец даты в качестве индекса в конце.

4b9b3361

Ответ 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