pandas双分隔符拆分列产生多余空列及中间值提取方法
问题根因
直接使用单个!作为分隔符拆分字符串时,字符串首尾的!、有效值之间连续的!!都会被判定为分隔边界,因此会生成大量无意义的空值列。
实现方案
1. 正确拆分得到三色组合列
先清洗掉每行字符串首尾多余的!,再以连续的!!作为分隔符做拆分,即可直接得到目标结构,代码如下:
import pandas as pd # 提取目标列后先去除首尾的感叹号 color_series = df['!Color1:Color2:Color3!'].str.strip('!') # 以连续两个感叹号为分隔符拆分,自动展开为多列 color_combo_df = color_series.str.split('!!', expand=True)
运行上述代码后输出的结果,就和预期的三色组合结构完全一致,无多余空列。
2. 提取每个三色组合的中间颜色
每个非空单元格的内容均为首色:中间色:尾色的冒号分隔格式,对每个单元格按冒号拆分后取索引为1的元素,即可得到中间色结果:
# 遍历所有列,对非空值拆分取中间位 middle_color_df = color_combo_df.apply( lambda col: col.str.split(':', expand=True)[1] )
执行后输出的结果就是需要的仅保留中间颜色的结构。
内容的提问来源于stack exchange,提问作者user326964
相关产品推荐
相关产品推荐

