如何在Pandas DataFrame中按条件拆分列值生成对应新行
Pandas单列指定条件拆分扩行实现代码
import pandas as pd # 构造示例原始数据 df = pd.DataFrame({ 'var1': ['a,b,c', 'd,e,f', 'g,h'], 'var2': [1, 2, 3], 'var3': ['X', 'Y', 'Z'] }) # 定义var1列处理逻辑 def split_var1(s): parts = s.split(',') # 逗号个数等于2对应拆分后长度为3,按规则生成两个新值 if len(parts) == 3: return [f"{parts[0]},{parts[2]}", f"{parts[1]},{parts[2]}"] # 逗号个数等于1直接返回原内容 else: return [s] # 应用处理逻辑后展开为新行 df['var1'] = df['var1'].apply(split_var1) df = df.explode('var1', ignore_index=True) print(df)
运行后输出结果与要求的目标DataFrame完全一致:
var1 var2 var3 0 a,c 1 X 1 b,c 1 X 2 d,f 2 Y 3 e,f 2 Y 4 g,h 3 Z
逻辑说明
- 先通过字符串拆分后的长度判断是否符合拆分条件:拆分后长度为3对应2个逗号,符合拆分要求
- 所有处理结果统一返回列表格式,后续直接调用Pandas内置的
explode方法即可完成扩行操作,无需手动循环拼接 - 最后通过
ignore_index=True参数重置结果的行索引,符合常规使用习惯
内容的提问来源于stack exchange,提问作者Vishnubhatla Saivamsi
相关产品推荐
相关产品推荐

