Python操作CSV:拆分逗号分隔列值为独立行并重排列顺序
CSV格式转换实现方案
核心逻辑是将逗号分隔的多值列按对应关系拆分,每组值单独成行,可直接基于pandas实现,无需手写复杂循环。
实现步骤
- 读入原始CSV时注意匹配实际分隔符:你之前生成初始文件用的是分号
;作为分隔符,读入时必须指定sep=';',否则会出现列解析错误 - 对
hostname/IP/MAC三列按逗号拆分,同时清理多余空格、过滤空值,避免原始数据多打逗号产生无效空行 - 用pandas内置的
explode方法按索引对齐展开三列的拆分结果,保证同一行拆分出的主机名、IP、MAC一一对应 - 调整列顺序后导出为目标CSV
完整可运行代码
import pandas as pd # 1. 读入原始CSV,替换为你的实际文件路径 df = pd.read_csv('/path/to/your/raw_source.csv', sep=';') # 2. 拆分三列的逗号分隔值,做基础数据清洗 split_cols = ['hostname', 'IP', 'MAC'] for col in split_cols: df[col] = df[col].apply( lambda x: [item.strip() for item in str(x).split(',') if item.strip()] ) # 3. 对齐展开为单行单组数据 # pandas版本≥1.3.0支持多列同时explode df = df.explode(split_cols, ignore_index=True) # 低版本pandas用逐列展开写法替代上面一行即可 # df = df.explode('hostname').explode('IP').explode('MAC').reset_index(drop=True) # 4. 调整为目标列顺序,导出结果 df_final = df[['hostname', 'IP', 'MAC', 'SWA']] df_final.to_csv('/path/to/your/target_result.csv', index=False)
效果说明
运行后导出的CSV会完全匹配目标格式:每一行对应单台主机的hostname、IP、MAC和所属SWA编号,不会保留逗号分隔的聚合值。
内容的提问来源于stack exchange,提问作者Dexter
相关产品推荐
相关产品推荐

