使用Miller工具高效处理多CSV文件数据
2025-05-25 15:06:27作者:董宙帆
概述
Miller是一款功能强大的命令行数据处理工具,特别适合处理结构化数据如CSV文件。本文将介绍如何使用Miller实现类似Excel中"从文件夹加载数据"、"合并并加载"多个CSV文件以及"应用转换"的功能。
多文件合并处理
Miller可以轻松处理目录下的多个CSV文件。使用通配符*.csv可以匹配目录下所有CSV文件:
mlr --csv filter '$ColumnX == "1"' ../folder/*.csv > output.csv
这条命令会读取../folder/目录下所有CSV文件,过滤出ColumnX列值为"1"的行,并将结果合并输出到output.csv文件中。
数据过滤操作
Miller提供了强大的过滤功能,主要通过filter动词实现:
- 基本过滤:保留满足条件的行
mlr --csv filter '$three == 1' input.csv
- 多条件过滤:使用逻辑运算符组合条件
mlr --csv filter '$columnA == 1 && $columnB == 2' input.csv
- 字符串匹配过滤:处理包含特定字符串的行
mlr --csv filter '$columnC =~ "pattern"' input.csv
数据转换操作
除了过滤行,Miller还能对特定列的值进行修改:
- 字符串替换:使用
sub或gsub函数
mlr --csv put '$columnD = sub($columnD, "abc", "xyz")' input.csv
- 条件性修改:只修改满足条件的行
mlr --csv put '$columnE == "TEST" {$columnF = "NEW_VALUE"}' input.csv
- 多列同时修改:修改多个列的值
mlr --csv put 'if ($columnG == "TEST" && $columnH == "TEST") {
$columnG = "NEW";
$columnH = "NEW"
}' input.csv
实际应用示例
假设我们需要处理一个包含产品信息的CSV文件,要求:
- 过滤出状态为"active"的产品
- 将价格列中的"$"符号移除
- 将分类列中的"&"替换为"and"
可以使用以下Miller命令:
mlr --csv filter '$status == "active"' \
then put '$price = sub($price, "\\$", "");
$category = gsub($category, "&", "and")' \
input.csv > output.csv
性能优势
相比Excel,使用Miller处理大量CSV文件具有明显优势:
- 内存效率高,适合处理大型数据集
- 命令行操作可轻松集成到自动化流程中
- 处理速度快,特别适合批量操作
- 可重复执行,确保结果一致性
总结
Miller提供了强大而灵活的数据处理能力,通过简单的命令行操作就能实现复杂的数据转换任务。无论是简单的过滤还是复杂的数据清洗,Miller都能高效完成,是数据工程师和数据分析师的得力工具。
登录后查看全文
热门项目推荐
相关项目推荐
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0191
cann-learning-hubCANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。Jupyter Notebook0120
Step-3.7-FlashStep-3.7-Flash是一个拥有 1980 亿参数的稀疏混合专家(MoE)视觉语言模型,由 1960 亿参数的语言主干网络和 18 亿参数的视觉编码器组合而成,具备原生图像理解能力。Python00
JoyAI-EchoJoyAI-Echo,这是一个独立的、仅用于推理的版本,旨在实现分钟级多镜头音视频生成。它采用了经过蒸馏的DMD生成器、配对的跨模态记忆以及故事级别的一致性。其性能的核心在于,一个跨模态视听记忆库能够在长达五分钟的视频中保持角色外观和语音音色的一致性。同时,一个训练后处理流程将基于记忆的强化学习与分布匹配蒸馏相结合,实现了7.5倍的速度提升,显著增强了视觉质量和对齐效果。00
fun-rec推荐系统入门教程,在线阅读地址:https://datawhalechina.github.io/fun-rec/Python03
so-large-lm大模型基础: 一文了解大模型基础知识01
热门内容推荐
最新内容推荐
项目优选
收起
暂无描述
Dockerfile
764
4.98 K
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
857
1.93 K
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
684
1.33 K
Ascend Extension for PyTorch
Python
720
883
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.08 K
1.1 K
deepin linux kernel
C
32
16
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
457
440
用户可使用该项目在 OpenHarmony 平台开发应用,支持通过 IDE 或终端用 Flutter Tools 指令编译构建,基于 Flutter 3.27.4 版本,新增 impeller-vulkan 渲染模式,兼容多种开发指令与环境配置。
Dart
1.01 K
262
华为昇腾面向大规模分布式训练的多模态大模型套件,支撑多模态生成、多模态理解。
Python
151
253
CANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体,本仓库为其提供可复用的 Skills 模块。
Python
1 K
610