这个问题已经有similar question个了,但是答案并不能解决这个问题.

df = pl.DataFrame({"id": [1, 2, 1], "name": ['jenobi', 'blah', 'jenobi'], 
                "company": [[['some company 1', 'some company2'], ['some company2']], 
                [['company 1'], ['company 2', 'company 3']],
                [['some company 1'], ['some company2', 'some company 1', 'some company 2']]]
               })

Dataframe遵循如上的模式.我想在GROUPBY期间合并列表列表,并根据ID和名称进行聚合.

希望结果显示一个字符串连接的值,例如jenobi应该显示以下公司:"some company 1,some company 2,some company 2".

我try 对该公司进行分组AGG,并将结果扁平化,但这会产生panic 错误.

根据jqury的 comments ,先做扁平再做连接的问题是列表是扁平的.但是,输出中的平面子列表两边有双引号.

enter image description here

这是从以下方面产生的..

df.groupby("name").agg(pl.col("company").flatten().list.join(", "))
df.with_columns(pl.col("company").list.unique())

Ideally, the final result will show.. enter image description here

Panic Error

data = (
    pl.read_parquet(r"input.parquet")
    .select("id", "name", "company")
    .groupby("id", "name")
    .agg(
        pl.col("company").flatten().list.unique()
    )
)

enter image description here

有什么建议吗?

推荐答案

从版本0.19.9开始,我们可以展开/放大列表列的Repr.

pl.Config(fmt_table_cell_list_len=-1, fmt_str_lengths=120)

您可以对.agg()中的每一层嵌套进行.flatten(),然后调用.unique()

(df.group_by("name")
   .agg(pl.col("company").flatten().flatten().unique())
)
shape: (2, 2)
┌────────┬───────────────────────────────────────────────────────┐
│ name   ┆ company                                               │
│ ---    ┆ ---                                                   │
│ str    ┆ list[str]                                             │
╞════════╪═══════════════════════════════════════════════════════╡
│ blah   ┆ ["company 1", "company 2", "company 3"]               │
│ jenobi ┆ ["some company2", "some company 2", "some company 1"] │
└────────┴───────────────────────────────────────────────────────┘
  • 0.19.0Note: df.groupby更名为df.group_by

Python相关问答推荐

不同数据类型的Python成员变量不会在具有相同优先级的不同线程中更新

调试回归无法解决我的问题

Python中的锁定类和线程以实现dict移动

除了Python之外,可以替代bare?

使用多个性能指标执行循环特征消除

计算所有前面行(当前行)中列的值

当使用keras.utils.Image_dataset_from_directory仅加载测试数据集时,结果不同

Python上的Instagram API:缺少client_id参数"

使用miniconda创建环境的问题

Pandas - groupby字符串字段并按时间范围 Select

从嵌套的yaml创建一个嵌套字符串,后面跟着点

通过ManyToMany字段与Through在Django Admin中过滤

下三角形掩码与seaborn clustermap bug

LocaleError:模块keras._' tf_keras. keras没有属性__internal_'''

在不同的帧B中判断帧A中的子字符串,每个帧的大小不同

如何找出Pandas 图中的连续空值(NaN)?

使用__json__的 pyramid 在客户端返回意外格式

如何删除重复的文字翻拍?

用两个字符串构建回文

Python 3试图访问在线程调用中实例化的类的对象