2017-05-17 62 views
0

我想將日期時間轉換爲csv文件中的時間戳。日期時間格式位於我的csv文件的第8列。請幫忙。提前致謝。 這是我迄今爲止。我想將日期時間轉換爲csv文件中的時間戳

這是污染數據(pollution.csv)的最後一列是日期時間格式

臭氧,particullate_matter,carbon_monoxide,sulfure_dioxide,nitrogen_dioxide,經度,緯度,日期時間

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看起來像我在下面顯示。

臭氧,particullate_matter,carbon_monoxide,sulfure_dioxide,nitrogen_dioxide,經度,緯度,日期時間

101,94,49,44,87,10.104986076057457,56.23172069428216,1406831700.0 
106,97,48,47,86,10.104986076057457,56.23172069428216,1406832000.0 
107,95,49,42,85,10.104986076057457,56.23172069428216,1406832300.0 
103,90,51,44,87,10.104986076057457,56.23172069428216,1406832600.0 
105,94,49,39,82,10.104986076057457,56.23172069428216,1406832900.0 
106,92,48,42,77,10.104986076057457,56.23172069428216,1406833200.0 
110,87,50,40,81,10.104986076057457,56.23172069428216,1406833500.0 
106,91,52,36,82,10.104986076057457,56.23172069428216,1406833800.0 
106,88,50,40,85,10.104986076057457,56.23172069428216,1406834100.0 

我想將日期時間轉換成時間戳。

我做了什麼至今

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) 

,我能得到一個時間戳值。

我的時區 - 週三5月17日十六點47分20秒IST 2017年(印度標準時間)

+0

如果您遇到問題,您可以發佈您已嘗試過的內容,並清楚說明哪些內容無法正常工作並提供[最小,完整和可驗證示例](https://stackoverflow.com/help/mcve)。我建議閱讀[如何問](http://stackoverflow.com/help/how-to-ask)一個很好的問題。此外,一定要採取[旅遊](https://stackoverflow.com/tour) –

+1

我非常抱歉先生。這是我第一次在這裏問一個問題。我已更正了這些值。 – Mikasa

回答

0

試試這個:以上

$ 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」,但這似乎毫無意義 - 因爲所有的輸入都是以秒爲單位的分辨率,所以你永遠不會真正獲得有意義的值。這與預期的輸出之間的差異幾乎可以肯定是由於腳本運行的時區。

+1

謝謝一噸先生!這工作完美:)。感謝您耐心回答我的問題。 – Mikasa

0

你想要的是一個日期字符串轉換爲時間戳:

import datetime 

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

你得到:

1414522809.0 

要讀取一個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 
+0

謝謝這麼多!但我正在處理一個csv文件。我想將整列轉換爲時間戳。我對這個概念很陌生。請幫忙。 – Mikasa

+0

請閱讀官方文檔。你也可以參考這個網站:https:// pymotw。com/3/csv/index.html –

+0

謝謝非常多:)! – Mikasa