【问题标题】:read csv files in python在python中读取csv文件
【发布时间】:2019-09-16 11:53:42
【问题描述】:

我需要从文件夹中的多个 csv 文件中读取一列,然后从该列中提取最小和最大日期。

例如如果我有文件夹路径“/usr/abc/xyz/”并且多个csv文件如下所示

aaa.csv
bbb.csv
ccc.csv

文件包含数据

aaa.csv 包含数据

name,address,dates
xxx,11111,20190101
yyy,22222,20190201
zzz,33333,20190101

bbb.csv 包含数据

name,address,dates
fff,11111,20190301
ggg,22222,20190501
hhh,33333,20190601

所以我需要从文件中提取最小和最大日期,在上述情况下,日期范围应该是 20190101 到 20190601

谁能帮我从python文件中提取最小和最大日期

我需要避免使用 pandas 或任何其他包,因为我需要直接在 pyhton 中读取 csv 文件

【问题讨论】:

  • 我建议你找一个基本的熊猫教程,应该这样做:data36.com/…
  • 我不确定,为什么要否决这个问题。因为,我已经在问题中告诉过我不想使用 pandas 或任何其他包

标签: python csv


【解决方案1】:
import pandas as pd

dt = pd.read_csv('you_csv.csv')
print(max(dt['dates']))
print(min(dt['dates']))

如果您需要避开pandas,您可以执行以下完全不推荐的操作:

dt = []
with open('your_csv.csv', 'r') as f:
    data = f.readlines()
for row in data:
    dt.append(row.split(',')[2].rstrip())
dt.pop(0)
print(max(dt))
print(min(dt))

【讨论】:

  • 正如,我已经提到我不想使用熊猫等。第二种方法是值得怀疑的,因为你说它会读取文件夹中的所有 csv?
  • @aspire 一点也不。它将文件作为字符串读取并拆分您想要的内容。
【解决方案2】:

仅使用可用核心库的解决方案。它不会将整个文件读入内存,因此占用空间应该非常低,并且可以处理更大的文件。

  • pathlib用于获取所有的csv文件
  • datetime 用于转换为日期
  • sys 用于用户输入
$ python3 date_min_max.py /usr/abc/xyz/
min date: 2019-01-01 00:00:00
max date: 2019-06-01 00:00:00
date_min_max.py
from pathlib import Path
from datetime import datetime
import sys


if len(sys.argv) > 1:
    p = sys.argv[1]
else:
    p = "."

files = [x for x in Path(p).iterdir() if x.suffix == ".csv"]

date_format = "%Y%m%d"

dt_max = datetime.strptime("19000101", date_format)
dt_min = datetime.strptime("30000101", date_format)
for file in files:
    with file.open("r") as fh:
        for i, line in enumerate(fh):
            if i == 0:
                continue
            t = line.strip().split(",")[2]
            dt_max = max(dt_max, datetime.strptime(t, date_format))
            dt_min = min(dt_min, datetime.strptime(t, date_format))


print("min date: {}\nmax date: {}".format(dt_min, dt_max))

【讨论】:

    猜你喜欢
    • 2015-07-21
    • 2021-12-08
    • 1970-01-01
    • 2018-01-08
    • 2015-01-12
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    相关资源
    最近更新 更多