python-将Yearday列的CSV数据读取到Pandas中作为日期时间
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-将Yearday列的CSV数据读取到Pandas中作为日期时间,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1724字,纯文字阅读大概需要3分钟。
内容图文
![python-将Yearday列的CSV数据读取到Pandas中作为日期时间](/upload/InfoBanner/zyjiaocheng/679/3db59541747240259c1d41724c8c575d.jpg)
我已经将CSV数据与年份作为列之一,而不是通常的月份和日期.我花了一个小时,这是我唯一可以做的事情:将所有浮点列转换为整数,打印为字符串,然后使用自定义解析例程将字符串转换为datetime:
from pylab import *
import pandas as pd
import datetime as dt
from StringIO import StringIO
csv = '''Latitude, Longitude, Hours, Minutes, Seconds, YearDay, Year, CruiseID
41.942880, -70.292217, 23, 54, 20, 253, 2011, 11015
41.942865, -70.292160, 23, 54, 22, 253, 2011, 11015
41.942847, -70.292105, 23, 54, 24, 253, 2011, 11015
41.942827, -70.292052, 23, 54, 26, 253, 2011, 11015
41.942803, -70.292002, 23, 54, 28, 253, 2011, 11015
'''
def parse(hr, mn, sec, yearday, yr):
date_string = '%4.4d %3.3d %2.2d %2.2d %2.2d' % (int(yr), int(yearday), int(hr), int(mn), int(sec))
return dt.datetime.strptime(date_string, "%Y %j %H %M %S")
df = pd.read_csv(StringIO(csv),skipinitialspace=True,
parse_dates={'datetime':['Hours','Minutes','Seconds','YearDay','Year']},
date_parser=parse, index_col='datetime',skipfooter=1)
确实确实给出了正确的结果:
print df
Latitude Longitude CruiseID
datetime
2011-09-10 23:54:20 41.942880 -70.292217 11015
2011-09-10 23:54:22 41.942865 -70.292160 11015
2011-09-10 23:54:24 41.942847 -70.292105 11015
2011-09-10 23:54:26 41.942827 -70.292052 11015
2011-09-10 23:54:28 41.942803 -70.292002 11015
2011-09-11 00:08:48 41.933332 -70.281817 11015
但是,哪种更简单,更好的方法来读取此数据呢?
解决方法:
您可以编写更简洁的parse函数,而无需进行int转换:
def parse(hr, mn, sec, yearday, yr):
date_string = ' '.join([yr, yearday, hr, mn, sec])
return dt.datetime.strptime(date_string, "%Y %j %H %M %S")
除此之外,IMO您的解决方案看起来不错(我认为您确实需要在此处编写自己的解析器).
内容总结
以上是互联网集市为您收集整理的python-将Yearday列的CSV数据读取到Pandas中作为日期时间全部内容,希望文章能够帮你解决python-将Yearday列的CSV数据读取到Pandas中作为日期时间所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。