gpt4 book ai didi

python - 如何在没有 Pandas 的情况下读取、格式化、排序和保存 csv 文件

转载 作者:行者123 更新时间:2023-12-03 16:32:35 25 4
gpt4 key购买 nike

  • 给定文件 test.csv 中的以下示例数据

  • 27-Mar-12,8.25,8.35,8.17,8.19,9801989
    26-Mar-12,8.16,8.25,8.12,8.24,8694416
    23-Mar-12,8.05,8.12,7.95,8.09,8149170
  • 如何在不使用 pandas 的情况下解析此文件?
  • 打开文件
  • 将日期列格式化为 datetime日期格式字符串
  • 按第 0 列、日期列
  • 对所有行进行排序
  • 保存回同一个文件,带有日期列的标题

  • pandas这可以通过一行(长)代码完成,不包括导入。
  • 需要注意的是,使用 parse_date可能会很慢,如果 date_parser没有使用。


  • import pandas as pd

    (pd.read_csv('test.csv', header=None, parse_dates=[0], date_parser=lambda t: pd.to_datetime(t, format='%d-%b-%y'))
    .rename(columns={0: 'date'})
    .sort_values('date')
    .to_csv('test.csv', index=False))
    预期形式
    date,1,2,3,4,5
    2012-03-23,8.05,8.12,7.95,8.09,8149170
    2012-03-26,8.16,8.25,8.12,8.24,8694416
    2012-03-27,8.25,8.35,8.17,8.19,9801989
  • 编写此问题和答案是为了填补 Stack Overflow 上的知识内容空白。
  • 非常好用pandas对于这个任务。
  • 如果没有 pandas,想出所有必要的部分来创建完整的解决方案是非常困难的。 .
  • 这对于任何对此任务感到好奇的人以及禁止使用 pandas 的学生都应该是有益的。 .
  • 我不介意看到 numpy 的解决方案,但问题的主要观点是仅使用标准库中的包来完成此任务。

  • 这三个答案都是可以接受的问题解决方案。

    最佳答案

    尽可能少地使用进口:

    from datetime import datetime

    def format_date(date: str) -> str:

    formatted_date = datetime.strptime(date, "%d-%b-%y").date().isoformat()

    return formatted_date


    # read in the CSV
    with open("test.csv", "r") as file:

    lines = file.readlines()

    records = [[value for value in line.split(",")] for line in lines]

    # reformat the first field in each record
    for record in records:
    record[0] = format_date(record[0])

    # having formatted the dates, sort records by first (date) field:
    sorted_records = sorted(records, key = lambda r: r[0])

    # join values with commas once more, removing newline characters
    prepared_lines = [",".join(record).strip("\n") for record in sorted_records]

    # create a header row
    field_names = "date,1,2,3,4,5"

    # prepend the header row
    prepared_lines.insert(0, field_names)

    prepared_data = "\n".join(prepared_lines)

    # write out the CSV
    with open("test.csv", "w") as file:
    file.write(prepared_data)

    关于python - 如何在没有 Pandas 的情况下读取、格式化、排序和保存 csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64083565/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com