П.Д. .__ version__ = 0.18.0Панды DataFrame строительство из списка OrderedDict: сохраняющие порядок столбцов
Предположим, у вас есть список из OrderedDict:
[OrderedDict([('SecurityCode', 'IDX.MSDENON'), ('DescriptionLong', 'MSCI Norway NR USD (EUR)'), ('DataSrc', 'BGN.COB'), ('Ticker', 'MSDENON Index'), ('LastRun', None)])]
если вы строите DataFrame от дефолта конструктор (или даже с .from_dict() метод)
df = pd.DataFrame(mylist)
не сохраняет порядок столбцов:
DataSrc DescriptionLong LastRun SecurityCode Ticker
0 BGN.COB MSCI Norway NR USD (EUR) None IDX.MSDENON MSDENON Index
тогда:
df = pd.DataFrame(data, columns=data[0].keys())
SecurityCode DescriptionLong DataSrc Ticker LastRun
0 IDX.MSDENON MSCI Norway NR USD (EUR) BGN.COB MSDENON Index None
делает perserve порядок столбцов.
Я прочитал в StackOverflow, что такая ошибка присутствовала в 0.11, но IMHO нам не нужно указывать column = option в конструкторе по умолчанию. Я что-то упустил или это ошибка, требующая отчета?
EDIT: Была создана и принята проблема github на pydata/pandas repo. Это «ошибка» в конструкторе по умолчанию, в любом случае исключая порядок столбцов OrderedDict. Поправка была запланирована на следующую версию (фиксации принятой для 0.18-2)
Все еще работает в этом'0.18.1', вы можете обновить эту проблему или оставить комментарий по github – EdChum
Что бы вы ожидали, если второй OrderedDict в списке имеет другой порядок? Разве не имеет смысла заставлять вас указывать, что вы хотите использовать порядок первого значения? –
Эти OrderedDict создаются после SQL-запроса, поэтому порядок определяется один раз для всех – comte