按白天查找CSV中的第一个和最后一个事件

2024-04-18 18:38:48 发布

您现在位置:Python中文网/ 问答频道 /正文

希望使用python从csv文件的行中找出值的第一次出现和最后一次出现。我要比较的值是日期值,它是第[1]行

输入:

ABC, 12/2/2017 ,9:21 AM
ABC, 12/2/2017 ,1:15 PM
ABC, 12/2/2017 ,6:38 PM
ABC, 12/4/2017 ,9:21 AM
ABC, 12/4/2017 ,1:01 PM
ABC, 12/7/2017 ,11:59 AM
ABC, 12/8/2017 ,9:33 AM
ABC, 12/8/2017 ,11:15 AM
ABC, 12/8/2017 ,5:15 PM

输出:

ABC, 12/2/2017 ,9:21 AM
ABC, 12/2/2017 ,6:38 PM
ABC, 12/4/2017 ,9:21 AM
ABC, 12/4/2017 ,1:01 PM
ABC, 12/7/2017 ,11:59 AM
ABC, 12/8/2017 ,9:33 AM
ABC, 12/8/2017 ,5:15 PM

提前谢谢


Tags: 文件csvamabcpm
2条回答

这假定您的数据已经按照示例中的顺序进行了排序operator.itemgetter(1)返回一个函数,该函数允许itertools.groupby对第二项(即row[1])上的行进行分组

import iterools
import operator
import csv

with open('some.csv', newline='') as f:
    reader = csv.reader(f)
    result = []
    for k, g in itertools.groupby(reader, operator.itemgetter(1)):
        group = list(g)
        result.append(group[0])
        if len(group) > 1:
            result.append(group[-1])

帮助您表达您的问题:

  • 有助于你清楚地问,而这反过来又
  • 使您能够编写伪代码,从而
  • 可以是最小的示例(您已经尝试过的),反过来
  • 应该由您在问题中发布,然后
  • 使我们能够指导您找到解决方案

问题

查找给定CSV文件的第一行和最后一行(一天内的时间)。 该程序需要用Python编写。 程序需要从CSV文件中读取行。 我想阅读被分成3列的每一行(特别是第二列日期和第三列时间),以便将它们的值与其他行的相应值进行比较。 比较应在日期组内进行,并且仅比较相同日期的行

第[1]行中的日期值

给定输入

CSV文件的一个简单示例有以下3行,分别代表一天(第二列值为12/2/2017)和3次(第三列值为9:21 AM1:15 PM6:38 PM):

ABC, 12/2/2017 ,9:21 AM
ABC, 12/2/2017 ,1:15 PM
ABC, 12/2/2017 ,6:38 PM

伪代码

假设我不懂python,也不知道从哪里开始编码,下面是我想用python编程的逻辑流程:

  1. 读取CSV文件的所有行
  2. 按第二列(日期)值将行分组到一天内的时间列表中
  3. 将时间列表(每天分组)与第三列(时间)值进行比较,以仅将两行过滤到结果中:第一次出现(最早时间)和最后一次出现(最晚时间)
  4. 将筛选结果作为行写入CSV输出文件

预期产量

在此之后,预期输出CSV将包含:

ABC, 12/2/2017 ,9:21 AM

ABC, 12/2/2017 ,6:38 PM

请注意,已过滤掉一行(从结果中删除):

ABC, 12/2/2017 ,1:15 PM

相关问题 更多 >