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

Python3 Pandas按条件拆分指定列至新增列未生效,求助修正方案

Python3 Pandas按条件拆分指定列至新增列未生效,求助修正方案

我帮你排查下问题哈~你的代码没达到预期效果主要有两个核心原因,咱们一步步来调整:

问题1:分隔符不匹配,拆分逻辑不对

你要拆分的列4内容是0.5 , Z20/1 ; 120,里面的逗号是空格+逗号+空格(,),而且还有分号分隔的部分;但你代码里用的是, (逗号+空格)作为分隔符,不仅匹配不上原内容的逗号分隔,而且就算匹配到,也只能拆出2部分,没法填充到7、8、9这3列里。

问题2:直接赋值不存在的列容易出索引对齐问题

原DataFrame没有7、8、9列的时候,直接用loc条件赋值,偶尔会因为索引匹配的问题导致赋值失败,更稳妥的方式是先拆分出结果,再合并到原表。


修正后的完整代码

import numpy as np
import pandas as pd

var001_sf = input("Enter file name to import : ")
var002_sf = var001_sf + ".csv"
# 读取数据,制表符分隔符合你的源数据格式
var002_ar1 = pd.read_csv(var002_sf, sep='\t', header=None)
var002_ar1 = var002_ar1.dropna(axis=0)  # 移除空行

# 关键步骤:先统一分隔符,把"; "替换成", ",再按" , "拆分出3列
split_result = var002_ar1.iloc[:, 4].str.replace(' ; ', ' , ', regex=False).str.split(' , ', n=2, expand=True)
# 给拆分后的列命名为7、8、9,对应目标列位置
split_result.columns = [7, 8, 9]

# 把拆分结果合并到原DataFrame
var002_ar1 = pd.concat([var002_ar1, split_result], axis=1)

# 只保留"LUB"行的拆分结果,其他行清空这三列
var002_ar1.loc[var002_ar1.iloc[:, 6] != 'LUB', [7, 8, 9]] = np.nan

# 保存时关闭索引输出,避免多出不必要的行号列
var002_ar1.to_csv("t250221.csv", sep='\t', index=False)

效果说明

运行这段代码后,列6为"LUB"的那一行:

  • 列7会是0.5
  • 列8会是Z20/1
  • 列9会是120
    其他行的7、8、9列会是空值,完全符合你的需求~

备注:内容来源于stack exchange,提问作者sachee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 11:03:03