如何基于DataFrame列中存储的列表值生成多行数据?
拆分CSV中一行多值为多行的解决方案
问题场景
原始输入数据:
ID,dep_id EMP1,1,2,3 EMP2,4,5,6期望输出:
ID,dep_id EMP1,1 EMP1,2 EMP1,3 EMP2,4 EMP2,5 EMP2,6
方法1:awk命令(Linux/Unix环境快速处理)
执行以下命令即可完成转换:
BEGIN{FS=OFS=","} NR==1{print;next} {for(i=2;i<=NF;i++) print $1,$i}
说明:
- 先设置输入输出的分隔符为逗号
- 表头行直接打印,不做处理
- 遍历每行从第二列开始的所有值,每行输出一次ID加对应部门ID
方法2:Python脚本(跨平台通用)
将原始数据保存为input.csv,运行以下脚本生成output.csv:
with open("input.csv", "r") as infile, open("output.csv", "w") as outfile: # 写入表头 outfile.write(infile.readline()) for line in infile: items = line.strip().split(",") if len(items) < 2: continue emp_id = items[0] # 遍历每个部门ID,写入新行 for dep in items[1:]: outfile.write(f"{emp_id},{dep}\n")
方法3:Excel/Numbers可视化操作(适合非技术用户)
- 打开数据文件,将每行的多部门ID通过「分列」功能拆分为单独列
- 选中所有部门ID列,复制后右键选择「转置」粘贴到空白区域
- 在转置后的部门ID列左侧,拖拽填充对应的员工ID
- 将整理好的两列数据加上表头,即为目标格式
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

