如何在CSV表格中为重复COLOR值添加对应ID至SAME_COLOR列?
实现CSV中重复COLOR行的SAME_COLOR关联填充
需求说明:现有含约10k行的CSV文件,需为COLOR列重复的行(最多重复两次),在SAME_COLOR列填入对应重复行的ID;无重复COLOR的行则留空。
以下是两种高效手动处理方案:
方法一:Excel/LibreOffice 公式填充
直接在SAME_COLOR列使用公式批量计算:
- 打开CSV文件,定位到SAME_COLOR列的第一个数据行(假设是D2单元格)
- 输入以下公式(根据办公软件版本选择):
- 兼容Excel/LibreOffice的数组公式:
Excel需按=IFERROR(INDEX($A$2:$A$10001, MATCH(1, ($C$2:$C$10001=C2)*($A$2:$A$10001<>A2), 0)), "")Ctrl+Shift+Enter确认数组公式,LibreOffice自动识别 - 支持XLOOKUP的新版本Excel:
=XLOOKUP(TRUE, ($C:$C=C2)*($A:$A<>A2), $A:$A, "")
- 兼容Excel/LibreOffice的数组公式:
- 选中公式单元格,下拉填充至所有行,即可自动生成SAME_COLOR值
方法二:SQLite3 命令行处理
适合习惯用SQL操作的场景,步骤清晰:
- 打开终端/命令提示符,启动SQLite3:
sqlite3 temp.db - 创建临时表并导入CSV(假设文件名为
products.csv):CREATE TABLE temp_products (ID INTEGER, product TEXT, COLOR TEXT, SAME_COLOR INTEGER); .mode csv .import products.csv temp_products - 更新SAME_COLOR列,关联同色不同ID的记录:
UPDATE temp_products t1 SET SAME_COLOR = ( SELECT t2.ID FROM temp_products t2 WHERE t2.COLOR = t1.COLOR AND t2.ID != t1.ID ) WHERE EXISTS ( SELECT 1 FROM temp_products t2 WHERE t2.COLOR = t1.COLOR AND t2.ID != t1.ID ); - 导出更新后的CSV:
.mode csv .output updated_products.csv SELECT * FROM temp_products; .quit
执行完成后,当前目录下的updated_products.csv即为处理后的结果。
内容的提问来源于stack exchange,提问作者Serbiss
相关产品推荐
相关产品推荐

