Pandas:拆分并展开(explode)字符串时如何保留关联信息?
Pandas DataFrame 拆分格式处理方案
原始数据与期望输出
原始DataFrame:
df 0 Apple_a red, green; banana_b yellow 1 peach_p orange; pear_p green
期望输出:
0 Apple_a red 1 Apple_a green 2 banana_b yellow 3 peach_p orange 4 pear_p green
你的代码问题分析
你写的代码存在两处核心问题:
df2=df1.str[0] +x for x in df1.str[1:]语法错误,Pandas Series无法直接用这种遍历方式生成新序列- 拆分逻辑遗漏了对
red, green这类逗号分隔多值的处理,导致无法将同一前缀下的多个颜色拆分成单独行
正确处理代码
# 按分号拆分每组内容并展开为单行 df_split = df.str.split('; ', expand=True).stack().reset_index(drop=True) # 将每行拆分为前缀(如Apple_a)和颜色组两部分 df_prefix_color = df_split.str.split(' ', n=1, expand=True) df_prefix_color.columns = ['prefix', 'colors'] # 拆分颜色组并展开每个颜色为单独行 df_final = df_prefix_color.assign(colors=df_prefix_color['colors'].str.split(', ')).explode('colors') # 拼接前缀与颜色,重置索引得到最终结果 result = df_final.apply(lambda row: f"{row['prefix']} {row['colors']}", axis=1).reset_index(drop=True) print(result)
运行这段代码后,就能得到你期望的输出格式。
内容的提问来源于stack exchange,提问作者arv
相关产品推荐
相关产品推荐

