首页 > 解决方案 > 重命名列并重新格式化多个 CSV 文件的数据

问题描述

我有一个包含以下行的文件夹 CSV 文件:

Date      | A | B | C |
2021-10-11| A | B | C |

我想重新排列每个文件中的日期列,例如,从 2021-10-11 到 10/11/2021。

标签: pythonpython-3.xpandas

解决方案


使用 pathlib、datetime 和 csv 模块

要导入数据,请使用csv模块并翻转日期,您将需要一个 csv 阅读器和一个 csv 编写器。使用DictReaderDictWriter类会很方便。

使用datetime模块转换日期非常简单。

import csv
from datetime import datetime

old_fmt = '%Y-%m-%d'
new_fmt = '%m/%d/%Y'

def process_file(path):
    # read the data in
    with path.open('r') as f:
        reader = csv.DictReader(f)
        fieldnames = reader.fieldnames
        data = list(reader)

    # write the data out
    with path.open('w') as f:
        writer = csv.DictWriter(f, fieldnames=fieldnames)
        writer.writeheader()
        for row in data:
            # here we convert the format
            dt = datetime.strptime(row['date'], old_fmt)
            row['date'] = dt.strftime(new_fmt)
            writer.writerow(row)

pathlib是一个很好的文件系统模块。它很容易处理所有文件。

from pathlib import Path

folder = Path('path/to/directory')

for path in folder.iterdir():
    if path.is_file():
        process_file(path)

推荐阅读