gpt4 book ai didi

python - 如何在 Python 中计算多列 CSV 文件中日期之间的平均时间?

转载 作者:太空宇宙 更新时间:2023-11-03 14:38:22 25 4
gpt4 key购买 nike

我有一个包含三个不同列的 csv 文件,即年、月和日。如果我打印出来,它会像下面这样:

csv_reader = [['2016', '6', '22'], ['2016', '10', '2'], ['2016', '11', '1'], ['2016', '11', '3'], ['2016', '11', '3'], ['2016', '11', '17'], ['2016', '11', '17'], ['2016', '11', '17'], ['2016', '12', '2'], ['2016', '12', '12'], ['2016', '12', '22'], ['2016', '12', '22'], ['2017', '1', '11'], ['2017', '3', '11'], ['2017', '3', '11'], ['2017', '5', '12'], ['2017', '5', '12'], ['2017', '5', '12']]

所以 csv 文件和行都是列表。我想从此数据集中计算每个日期之间的平均天数。我尝试使用:

from datetime import date
for value in csv_reader:
dates = date(int(value))
differences = [(dates[i]-dates[i-1]).days for i in range(1, len(dates))]
print(float(sum(differences))/len(differences))

但是它返回了一个错误说明

TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'

而且我怀疑我的代码是否真的正确。预期结果应该计算每个日期之间的差异总和,然后除以总差异,这将返回平均天数。那么,你们中的任何人都可以就如何执行此任务提供建议吗?

最佳答案

所以我们有

csv_reader = [['2016', '6', '22'], ['2016', '10', '2'], ['2016', '11', '1'], ['2016', '11', '3'], ['2016', '11', '3'], ['2016', '11', '17'], ['2016', '11', '17'], ['2016', '11', '17'], ['2016', '12', '2'], ['2016', '12', '12'], ['2016', '12', '22'], ['2016', '12', '22'], ['2017', '1', '11'], ['2017', '3', '11'], ['2017', '3', '11'], ['2017', '5', '12'], ['2017', '5', '12'], ['2017', '5', '12']]

首先,要从比方说第一项中获取有效日期,您需要将 str 转换为 int,然后才调用 date:

date(*[int(d) for d in csv_reader[0]])

并且您需要为每 2 个日期创建一个 date 实例并将它们相减:

date(*[int(d) for d in csv_reader[0]]) - date(*[int(d) for d in csv_reader[1]])

之后,您会得到一个timedelta 对象,它有.days。有时它会是负数,因此您需要使用绝对值,以及 abs

在对所有这些天求和后,您需要相对于元素的数量进行平均。

总而言之,这是您需要的循环:

total = 0
for i in range(len(csv_reader)-1):
total += abs((date(*[int(d) for d in csv_reader[i]]) - date(*[int(d) for d in csv_reader[i+1]])).days)

>>> total
324
>>> total / len(csv_reader)
18

关于python - 如何在 Python 中计算多列 CSV 文件中日期之间的平均时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55674235/

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