将列字符串转换/解析为日期时间值 - 熊猫
Posted
技术标签:
【中文标题】将列字符串转换/解析为日期时间值 - 熊猫【英文标题】:Converting / parsing column strings to datetime values - pandas 【发布时间】:2016-10-21 17:24:07 【问题描述】:我有一个热模拟的 csv 输出,我想使用 pandas 对其进行数据分析。
将 csv 导入到 pandas 数据帧后,我想操作时间戳并将其导入。
起始格式如下(以空格开头,具有美国数据格式且缺少年份)。
' 05/01 01:00:00'
' 05/01 02:00:00'
' 05/01 03:00:00'
' 05/01 04:00:00'
' 05/01 05:00:00'
有人建议我用循环函数来解决它,我写如下:
timestamp = []
for ns in raw_datetime:
#timestamp.append(ns[5:7] + '.' + ns[2:4] + '_' + ns[9:11] + '00h')
timestamp.append('2016' + '/' + ns[2:4] + '/' + ns[5:7] + '_' + ns[9:11] + ':00')
在哪里
raw_datetime = df[' Date/Time'] #original data column
这工作正常并返回我想要的日期时间格式。
['2016/05/01_01:00', '2016/05/01_02:00', '2016/05/01_03:00', '2016/05/01_04:00']
然而,这似乎不适用于 pd.to_datetime 函数,因为这似乎需要一个列表而不是一个系列(?)。
我遇到了解析和函数的概念,例如:
raw_datetime.str.extract('string', expand=True)
但是,我不确定如何做到这一点,同时翻转月份和日期并添加原始数据中不存在的 2016 年信息。
谢谢!
编辑:下面添加的代码 注:本机格式为“05/01 01:00:00”,即:双倍空格、月、日、双倍空格、hh、mm、ss)]
第一次尝试
df = pd.read_csv('./SimResults.csv')
a = pd.to_datetime(df[' Date/Time'], format=' %m/%d %H:%M:%s')
第二次尝试:
df = pd.read_csv('./SimResults.csv')
raw_datetime = df[' Date/Time'].str.lstrip(' ')
raw_datetime = ('2016/') + raw_datetime
b = pd.to_datetime(raw_datetime, format='%Y/%m/%d %H:%M:%S')
【问题讨论】:
它应该在一个系列中也可以工作pd.to_datetime(df['your_new_col'])
应该工作
读取csv文件时使用parse_dates=['Date/Time']
,那么它会自动将2016
附加到日期。
对不起,这些似乎都不起作用!
【参考方案1】:
您应该将格式指定为to_datetime
函数,因为它不是默认格式:
pd.to_datetime(x, format='%Y/%m/%d_%H:%M')
【讨论】:
我已经从我的 'to_datetime' 函数中指定了格式,但是我收到错误:“时间数据 '05/01 01:00:00' 与格式 '%Y/ 不匹配” %m/%d_%H:%M' 字符串需要被“to_datetime”命令读取,不是吗? 不,不需要任何额外的操作。也许格式上有些错误?您可以在此处查看选项:docs.python.org/2/library/…。 尤金,恐怕它似乎不起作用。我已经尝试了很多选择,我不知道还能做什么。你愿意检查我的代码吗? 我在问题中添加了两位代码。谢谢以上是关于将列字符串转换/解析为日期时间值 - 熊猫的主要内容,如果未能解决你的问题,请参考以下文章