【问题标题】:Converting a csv file to Datetime将 csv 文件转换为日期时间
【发布时间】:2017-08-29 05:46:11
【问题描述】:

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

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

任何帮助将不胜感激。

文件头内容: viewed in excel

【问题讨论】:

标签: python csv pandas datetime


【解决方案1】:

您可以将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

【讨论】:

  • 这是最有帮助的!哦,在输入“print(df)”后居然有结果……真是一种解脱。
  • 所以输出是file?还是dataframe
  • Dataframe,但我真的需要这种格式来让我在使用时间序列预测时更轻松。
【解决方案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

谢谢:)

【讨论】:

  • @saremisona 不要忘记为您认为有用的任何答案投票 :)
  • 我对所有内容都投了赞成票,它只是说它已录制但未显示,因为我刚加入。对不起。 :(
【解决方案3】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-30
    • 1970-01-01
    • 1970-01-01
    • 2014-07-01
    • 1970-01-01
    相关资源
    最近更新 更多