У меня есть две серии Polars, которые содержат списки в виде объектов, что-то вроде:
series1 = pl.Series(["[1.2, 3.4]", "[5.6, 7.8]", "[9.1, 2.3]"])
series2 = pl.Series(["[1.0, 3.0]", "[5.0, 7.0]", "[9.0, 2.0]"])
Мне нужно работать с ними обоими, поэтому я делаю:
def parse_list(string_rep):
return ast.literal_eval(string_rep)
parsed_series1 = series1.map_elements(parse_list)
parsed_series2 = series2.map_elements(parse_list)
Однако моя исходная серия очень большая, и выполнение описанной выше операции занимает около 30 минут. В моем случае это неприемлемо.
Вместо этого я подумывал о кастинге сериала, что-то вроде:
series1.cast(pl.List)
но я получаю серию, в которой все элементы равны нулю:
Любая помощь высоко ценится.
Версия Поларса: 0.20.9
да, это мой случай!!! большое спасибо! @jqurious





Как уже упоминалось, в этом случае строки, с которыми вы работаете, являются допустимыми JSON.
Это означает, что вы можете использовать .str.json_decode()
series1.str.json_decode()
shape: (3,)
Series: '' [list[f64]]
[
[1.2, 3.4]
[5.6, 7.8]
[9.1, 2.3]
]
Приведенные примеры действительны в формате JSON, поэтому вы можете
series1.str.json_decode(), но всегда ли это так?