如何合并多个CSV文件并按指定时间列对行进行排序
合并多份分号分隔CSV并按日期列排序解决方案
你的CSV采用;作为分隔符,日期位于第三列且格式为YYYY/MM/DD HH:MM:SS,该格式的字符串排序顺序和时间顺序完全一致,可直接按列排序无需额外转换。
方案1:Linux/macOS 命令行(适合大文件,执行效率最高)
- 若文件包含表头,先单独提取表头到结果文件,避免排序时表头混入数据:
head -n 1 a.csv > merged_sorted.csv - 合并所有CSV的内容(跳过表头),按第三列排序后追加到结果文件:
tail -q -n +2 *.csv | sort -t';' -k3 >> merged_sorted.csv - 若文件无表头,直接执行以下命令即可:
cat *.csv | sort -t';' -k3 > merged_sorted.csv
参数说明:
-t';'指定分隔符为分号,-k3指定按第三列排序。
方案2:Windows PowerShell 方案
- 若文件包含表头,执行以下命令:
Get-ChildItem -Path . -Filter *.csv | ForEach-Object { Import-Csv $_.FullName -Delimiter ';' } | Sort-Object -Property $_.PSObject.Properties.Name[2] | Export-Csv -Path merged_sorted.csv -Delimiter ';' -NoTypeInformation -Encoding UTF8
- 若文件无表头,可手动指定列名后排序:
Get-ChildItem -Path . -Filter *.csv | ForEach-Object { Import-Csv $_.FullName -Delimiter ';' -Header 'ID','Content','Date','Extra' } | Sort-Object Date | Export-Csv -Path merged_sorted.csv -Delimiter ';' -NoTypeInformation -Encoding UTF8
可根据实际字段含义调整
-Header后的列名。
方案3:Python 跨平台方案(适合中小文件,自定义性强)
- 先安装依赖:
pip install pandas - 运行以下代码:
import pandas as pd import glob # 读取当前目录下所有csv文件 all_files = glob.glob("*.csv") df_list = [] for file in all_files: # 有表头设置header=0,无表头设置header=None并通过names参数指定列名 df = pd.read_csv(file, sep=';', header=0) df_list.append(df) # 合并所有数据 merged_df = pd.concat(df_list, ignore_index=True) # 按日期列排序,替换为你实际的日期列名 sorted_df = merged_df.sort_values(by="日期列名") # 导出结果,不保存索引列 sorted_df.to_csv('merged_sorted.csv', sep=';', index=False, encoding='utf-8')
内容的提问来源于stack exchange,提问作者jeanpic
相关产品推荐
相关产品推荐

