我想在csv fi中将日期时间转换为时间戳

2024-04-29 08:44:09 发布

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

我想把日期时间转换成csv文件中的时间戳。日期时间格式在我的csv文件的第8列。请帮忙。提前谢谢。 这就是我目前所拥有的。在

这是污染数据(污染.csv)最后一列是日期时间格式

臭氧、颗粒物、一氧化碳、二氧化硫、二氧化氮、经度、纬度、日期时间

101,94,49,44,87,10.104986076057457,56.23172069428216,2014-08-01 00:05:00
106,97,48,47,86,10.104986076057457,56.23172069428216,2014-08-01 00:10:00
107,95,49,42,85,10.104986076057457,56.23172069428216,2014-08-01 00:15:00
103,90,51,44,87,10.104986076057457,56.23172069428216,2014-08-01 00:20:00
105,94,49,39,82,10.104986076057457,56.23172069428216,2014-08-01 00:25:00
106,92,48,42,77,10.104986076057457,56.23172069428216,2014-08-01 00:30:00
110,87,50,40,81,10.104986076057457,56.23172069428216,2014-08-01 00:35:00
106,91,52,36,82,10.104986076057457,56.23172069428216,2014-08-01 00:40:00
106,88,50,40,85,10.104986076057457,56.23172069428216,2014-08-01 00:45:00

我想把最后一列转换成一组整数值,即时间戳。在

我要我的污染.csv看起来像我下面展示的。在

臭氧、颗粒物、一氧化碳、二氧化硫、二氧化氮、经度、纬度、日期时间

^{pr2}$

我想把日期时间转换成时间戳。在

到目前为止我所做的

  import time
   t = '2014-08-01 00:05:00'
   ts = time.strptime(t, '%Y-%m-%d  %H:%M:%S')
   timestamp = time.mktime(ts)
   print(timestamp)

我可以得到一个时间戳值。在

我的时区-2017年5月17日星期三16:47:20(印度标准时间)


Tags: 文件csv数据importtime格式时间整数
2条回答

您需要将日期字符串转换为时间戳:

import datetime

dt = datetime.datetime.strptime("2014-10-28 19:00:09", "%Y-%m-%d %H:%M:%S")
print(dt.timestamp())

你会得到:

^{pr2}$

要读取CSV文件,请参阅文档:csv

下面是一个例子:

import io
import csv

with open("your_file.csv", mode="r", encoding="utf-8") as fd:
    reader = csv.reader(fd)
    header = next(iter(reader))
    for row in reader:
        print(row[-1])

你会得到:

2014-08-01 00:05:00
2014-08-01 00:10:00
2014-08-01 00:15:00
2014-08-01 00:20:00
2014-08-01 00:25:00
2014-08-01 00:30:00
2014-08-01 00:35:00
2014-08-01 00:40:00
2014-08-01 00:45:00

试试这个:

$ awk 'BEGIN{FS=OFS=","} NR>1{$NF=mktime(gensub(/[-:]/," ","g",$NF))}1' file
ozone,particullate_matter,carbon_monoxide,sulfure_dioxide,nitrogen_dioxide,longitude,latitude,datetime
101,94,49,44,87,10.104986076057457,56.23172069428216,1406869500
106,97,48,47,86,10.104986076057457,56.23172069428216,1406869800
107,95,49,42,85,10.104986076057457,56.23172069428216,1406870100
103,90,51,44,87,10.104986076057457,56.23172069428216,1406870400
105,94,49,39,82,10.104986076057457,56.23172069428216,1406870700
106,92,48,42,77,10.104986076057457,56.23172069428216,1406871000
110,87,50,40,81,10.104986076057457,56.23172069428216,1406871300
106,91,52,36,82,10.104986076057457,56.23172069428216,1406871600
106,88,50,40,85,10.104986076057457,56.23172069428216,1406871900

上面的代码将GNU awk用于mktime()和gensub()。如果愿意,可以在每个值的末尾加一个“.0”,但这似乎毫无意义,因为所有的输入都是以秒为分辨率的,因此实际上永远不会在其中获得有意义的值。这与预期输出之间的差异几乎可以肯定是由于脚本运行的时区不同。在

相关问题 更多 >