Lazyframe Polars не возвращает указанный порядок схемы после сбораPython

Программы на Python
Anonymous
Lazyframe Polars не возвращает указанный порядок схемы после сбора

Сообщение Anonymous »

У меня есть функция, которая запускается в цикле и выполняет вычисления над списком массивов.
В какой-то момент во время первой итерации функции инициализируется ленивый кадр Polars. p>
На следующих итерациях новый фрейм данных указывается с использованием той же схемы, и два фрейма данных соединяются построчно с помощью pl.vstack, а затем снова указываются как ленивый фрейм.

Код: Выделить всё

import numpy as np
import polars as pl

def my_func():

array_list = [np.zeros((1,19))]*2 #this is just for example and not representative of shape of real array.

for i, _ in enumerate(array_list):

#calculations are done here

result = np.zeros((1,19)) #result of calculations (correct shape of real result)

if i < 1:
result_df = pl.DataFrame(data = result,
schema = {
'MDL',
'MVL',
'MWVL',
'RR',
'DET',
'ADL',
'LDL',
'DIV',
'EDL',
'LAM',
'TT',
'LVL',
'EVL',
'AWVL',
'LWVL',
'LWVLI',
'EWVL',
'Ratio_DRR',
'Ratio_LD'},
orient='row').lazy()

else:

new_df = pl.DataFrame(data=data,
schema = {
'MDL',
'MVL',
'MWVL',
'RR',
'DET',
'ADL',
'LDL',
'DIV',
'EDL',
'LAM',
'TT',
'LVL',
'EVL',
'AWVL',
'LWVL',
'LWVLI',
'EWVL',
'Ratio_DRR',
'Ratio_LD'
},
orient='row')

#append new dataframe to results
result_df = result_df.collect().vstack(new_df, in_place=True).lazy()

return result_df

При возврате кадра данных вне функции имена столбцов больше не в порядке, но данные в порядке.
например,

Код: Выделить всё

result.schema

OrderedDict([('LAM', Float64),
('LDL', Float64),
('ADL', Float64),
('DIV', Float64),
('MDL', Float64),
('MWVL', Float64),
('LWVL', Float64),
('MVL', Float64),
('TT', Float64),
('DET', Float64),
('RR', Float64),
('EDL', Float64),
('Ratio_LD', Float64),
('Ratio_DRR', Float64),
('LVL', Float64),
('LWVLI', Float64),
('EWVL', Float64),
('EVL', Float64),
('AWVL', Float64)])
Я предполагаю, что это связано с моей наивностью в отношении того, как работают ленивые фреймы, но есть ли способ обеспечить порядок без переименования столбцов?
Спасибо .

Подробнее здесь: https://stackoverflow.com/questions/783 ... collecting

Вернуться в «Python»