想要使用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
提前致谢
答案 0 :(得分:0)
这假设您的数据已按照示例中的顺序排序。 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])
答案 1 :(得分:0)
帮助您表达您的问题:
查找第一次和最后一次出现(一天内的时间)作为给定 CSV 文件的行。 该程序需要使用 Python 进行编码。 该程序需要从 CSV 文件中读取行。 我想读取每一行分成 3 列(特别是第二列日期和第三列时间)以便比较它们的值 到其他行的相应值。 比较应该在日期 组内进行,并且只比较同一日期的行。
日期值为 row[1]。
CSV 文件的一个简单示例有以下 3 行,它们代表一天(第二列的值为 12/2/2017
)和 3 次(第三列有 3 个不同的值 9:21 AM
、{{1} } 和 1:15 PM
):
6:38 PM
假设我不知道 python 并且不知道从哪里开始编码,这里是我想用 python 编程的逻辑流程:
在此之后,预期的输出 CSV 将包含:
ABC, 12/2/2017 ,9:21 AM
ABC, 12/2/2017 ,1:15 PM
ABC, 12/2/2017 ,6:38 PM
请注意,已过滤掉一行(从结果中删除):
ABC, 12/2/2017 ,9:21 AM
ABC, 12/2/2017 ,6:38 PM