我想要一列告诉我从第一行(2002 年 5 月 1 日上午 6:00)到最后一行(2006 年 11 月 20 日下午 2:00)所耗时。如何创建一个额外的列来告诉我自 2002 年 5 月 1 日开始以来经过的小时数? 这是我的数据框:
Date Time (HHMM) Site Plot Replicate Temperature \
1 5/1/2002 600 Barre Woods 21 7 4.5
2 5/1/2002 600 Barre Woods 31 9 6.5
3 5/1/2002 600 Barre Woods 10 2 5.3
4 5/1/2002 600 Barre Woods 2 1 4.0
5 5/1/2002 600 Barre Woods 13 4 5.5
6 5/1/2002 600 Barre Woods 11 3 5.0
7 5/1/2002 600 Barre Woods 28 8 5.0
8 5/1/2002 600 Barre Woods 18 6 4.5
9 5/1/2002 1400 Barre Woods 2 1 10.3
10 5/1/2002 1400 Barre Woods 31 9 9.0
11 5/1/2002 1400 Barre Woods 13 4 11.0
12 5/1/2002 1400 Barre Woods 18 6 6.5
13 5/1/2002 1400 Barre Woods 11 3 10.3
14 5/1/2002 1400 Barre Woods 10 2 10.5
15 5/1/2002 1400 Barre Woods 28 8 10.3
16 5/1/2002 1400 Barre Woods 21 7 10.5
17 5/1/2002 1400 Barre Woods 16 5 10.3
18 5/22/2002 600 Barre Woods 13 4 6.5
19 5/22/2002 600 Barre Woods 18 6 5.8
20 5/22/2002 600 Barre Woods 2 1 5.5
... ... ... ... ... ... ...
710 11/20/2006 1400 Barre Woods 31 9 7.4
最佳答案
简单:
- 读取文件,
- 解析日期和时间,
- 计算与第一个日期/时间的增量,
- 写出结果。
以下是使用类文件对象进行演示的实现:
import datetime
import io
data = """\
Date Time (HHMM) Site Plot Replicate Temperature
1 5/1/2002 600 Barre Woods 21 7 4.5
2 5/1/2002 600 Barre Woods 31 9 6.5
3 5/1/2002 600 Barre Woods 10 2 5.3
710 11/20/2006 1400 Barre Woods 31 9 7.4
"""
date_fmt = "%m/%d/%Y %H%M"
fisrt_date = None
with io.StringIO(data) as src_file, io.StringIO(data) as dst_file:
# copy the header
dst_file.write(next(src_file))
for line in src_file:
parts = line.strip().split()
if not parts:
dst_file.write(line)
continue
timestamp = parts[1] + " " + parts[2]
curr_date = datetime.datetime.strptime(timestamp, date_fmt)
if fisrt_date is None:
fisrt_date = curr_date
delta = curr_date - fisrt_date
dst_file.write(line.strip() + " " + str(delta) + "\n")
print(dst_file.getvalue())
你得到:
Date Time (HHMM) Site Plot Replicate Temperature
1 5/1/2002 600 Barre Woods 21 7 4.5 0:00:00
2 5/1/2002 600 Barre Woods 31 9 6.5 0:00:00
3 5/1/2002 600 Barre Woods 10 2 5.3 0:00:00
710 11/20/2006 1400 Barre Woods 31 9 7.4 1664 days, 8:00:00
当然,您可以更改增量值的格式。
关于python - 如何判断 csv 文件中经过的小时数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38409586/