如何在Python Polars中分解列表列并按比例分割整数列?

问题描述 投票:0回答:1

我有一个数据集,其中包含项目类型和每个项目的数量,但项目类型列的某些行包含类型列表而不是单一类型。我想将类型列表分解为单独的行并按比例分割数量。

在 pandas 中,我通常会爆炸,然后按索引分组,类似于 此处描述的过程(该页面上显示的示例数据类似于我正在使用的数据)。

我总是可以在 Polars 数据框中创建自己的索引,或者在适合内存的卡盘中与 Pandas 相互转换,但是在 Polars 中是否有更好的方法来做到这一点?

python pivot python-polars
1个回答
0
投票

最简单的方法是循环遍历值列中的列表并创建一个新的数据框。

import polars as pl

df = pl.DataFrame(data={'id': list('xyz'),
                         'val': [['abc', 20, 30.3], 2.1, 3]})

data = []
for row in df.iter_rows(named=True):
    try:
        for item in row['val']:
            data.append([row['id'], item])
    except:
        data.append([row['id'], row['val']])

df_out = pl.DataFrame(data=data, schema=df.schema)
print(df_out)

输出 -

© www.soinside.com 2019 - 2024. All rights reserved.