将列字符串转换/解析为日期时间值 - 熊猫

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/…。 尤金,恐怕它似乎不起作用。我已经尝试了很多选择,我不知道还能做什么。你愿意检查我的代码吗? 我在问题中添加了两位代码。谢谢

以上是关于将列字符串转换/解析为日期时间值 - 熊猫的主要内容,如果未能解决你的问题,请参考以下文章

将字符串日期时间转换为熊猫日期时间

熊猫将带有年份整数的列转换为日期时间

将列从日期转换为日期时间

日期时间字符串到纪元:熊猫数据框

将纪元时间转换为熊猫数据框中的格式化日期字符串

通过使用pyspark将列转换为行来解析数据框中的Json字符串列表?