首页 > 解决方案 > Python:遍历csv的行并在列发生变化时计算日期差

问题描述

只有Python的基本知识,所以我什至不确定这是否可能?

我有一个看起来像这样的 csv:[1]: https://i.stack.imgur.com/8clYM.png (这是虚拟数据,真实数据大约是 30K 行。)我需要找到最新的每个员工的职位(唯一 ID),然后计算员工在同一职位上的时间(= 多少天)。

到目前为止我做了什么:

import csv
import datetime
from datetime import *

data = open("C:\\Users\\User\\PycharmProjects\\pythonProject\\jts.csv",encoding="utf-8")
csv_data  = csv.reader(data)
data_lines = list(csv_data)
print(data_lines)

for i in data_lines:
    for j in i[0]: 

但是后来我一无所获,因为我什至无法概念化如何构建它。:-( 我也知道在某一时刻我需要:

datetime.strptime(data_lines[1][2] , '%Y/%M/%d').date()

有人可以帮忙吗?我只需要一个新的清单,上面写着:id jt days 500 plumber 370

编辑澄清:日期是采取的数据点。我需要从最近的那些回来计算,直到职位是别的东西。因此,在我的示例中,员工 5000 从 04/07/2021 到 01/03/2020。

标签: pythonpython-3.xloopsdatetimeiteration

解决方案


但是后来我一无所获,因为我什至无法概念化如何构建它。:-(

有一张员工地图(字典)到(日期,头衔)。

对于每一行,检查您是否已经有该员工的条目。如果您不只是将信息放在地图中,则将行的日期与条目的日期进行比较。如果该行具有更新的日期,请替换该条目。

浏览完所有行后,您可以浏览您收集的地图并计算您最终得到的日期与“今天”之间的差异。

顺便说一句,您的模式不正确,示例数据使用%d/%m/%Y(日/月/年)或%m/%d/%Y(月/日/年)格式,示例数据不足以说明哪个,但肯定不是 YMD。


推荐阅读