将csv文件转换为Datetime

时间:2017-04-04 06:52:39

标签: python csv pandas datetime

我在询问之前已经彻底搜索了一个答案,但我能找到的就是如何将我的csv文件的一列转换为日期时间对象。

我的问题是,我的文件有一个单独的列,分别为年,月,日,小时,分钟,而且我一直在努力转换并合并它们。

非常感谢任何帮助。

文件内容负责人: viewed in excel

3 个答案:

答案 0 :(得分:2)

您可以将read_csv与参数parse_datesdate_parser一起使用。另请参阅docs

import pandas as pd
from pandas.compat import StringIO

temp=u"""year,month,day,hour,minute,a
2017,09,01,10,20,1
2017,10,01,10,20,2
2017,11,01,10,20,3"""
#after testing replace 'StringIO(temp)' to 'filename.csv'
parser = lambda x: pd.datetime.strptime(x, '%Y %m %d %H %M')
df = pd.read_csv(StringIO(temp), 
                 parse_dates={'date':['year','month','day','hour','minute']},
                 date_parser=parser)
print (df)
                 date  a
0 2017-09-01 10:20:00  1
1 2017-10-01 10:20:00  2
2 2017-11-01 10:20:00  3

答案 1 :(得分:2)

我会写一个简单的方法。

假设有一个类似下面的CSV文件。

year,month,day,hour,minute
2017,1,1,23,59
2017,2,1,23,59
2017,3,1,23,59

您可以解析csv并创建日期时间对象。

import csv
from datetime import datetime

with open('test.csv') as fp:
    reader = csv.reader(fp)
    next(reader) # skip header
    for row in reader:
        row = [int(r) for r in row]
        print(datetime(row[0], row[1], row[2], row[3], row[4]))

结果是这样的。

2017-01-01 23:59:00
2017-02-01 23:59:00
2017-03-01 23:59:00

THX:)

答案 2 :(得分:0)

这可能是一本小手册,但你可以:

  1. 读取每一行,将其分成各种项目(年,月等)作为字符串。
  2. 然后使用datetime.datetime.strptime(它将具有给定格式的字符串转换为日期时间)重构为datetime对象。