You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何展开DataFrame中的Pandas Series并去重后拆分为多行数据

实现方法

核心逻辑是先对col3的每个Series元素去重,再调用pandas的explode方法展开为多行,代码简洁高效,适合大数据量场景。

核心代码

import pandas as pd

# 核心处理逻辑,df替换为你自己的DataFrame变量名
df_result = df.assign(
    # 对col3中的每个Series去重后排序,适配你示例的输出顺序
    col3 = df['col3'].apply(lambda s: sorted(s.unique()))
# 展开col3为多行,重置索引
).explode('col3', ignore_index=True)

代码说明

  • 如果你不需要对去重结果排序,要保留元素的原始出现顺序,去掉sorted()即可,也可以将s.unique()替换为s.drop_duplicates(),二者去重效果一致
  • explode方法需要pandas版本≥0.25,如果你使用的是更早的版本,可使用如下兼容写法:
from itertools import chain

# 先对col3去重排序
df['col3'] = df['col3'].apply(lambda s: sorted(s.unique()))
# 手动展开为多行
df_result = pd.DataFrame({
    col: df[col].repeat(df['col3'].str.len())
    for col in df.columns.drop('col3')
}).assign(col3=list(chain.from_iterable(df['col3']))).reset_index(drop=True)

输出验证

运行后df_result的输出和你要求的结构完全一致:

col1  col2 col3
0  xyz1   3.9    A
1  xyz1   3.9    B
2  xyz2   8.0    A
3  xyz2   8.0    C
4  xyz2   8.0    D

内容的提问来源于stack exchange,提问作者Yash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 11:36:04