如何使用python清理列并转换为datetime

2024-09-30 01:37:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在将我的数据从JSON解析为以下DataFrame,但无法从readingtime列中删除多余的内容并将其转换为datetime格式

                        readingtime                      deviceId  
0  {u'$date': u'2014-11-04T17:27:50.000+0000'}           1224EG12

我尝试使用replace,lstring rstring,但无法替换thr readingtime列中的额外字符

^{pr2}$

也试过loc,但没有出错

编辑时间:

我希望最后的阅读时间是 ‘2014-11-04 17:27:50.000+000’ 我要将其转换为datetime-yyyy-mm-dd hh:mm:不锈钢密耳+协调世界时


Tags: 数据json内容dataframedatetimedate格式时间
3条回答

尝试使用ast模块。与ast.literal_评估()将readingtime列转换为dict,然后从刚才创建的dict调用键“$date”。在

import ast

readingtime = "{u'$date': u'2014-11-04T17:27:50.000+0000'}"
da2 = ast.literal_eval(readingtime)
dat = da2['$date']

print(dat)

dat现在包含纯日期字符串,可以用datetime进行转换。在

马辛兹

假设da2['reading_time]返回一个dict

da2['reading_time]['$date'] 

将返回值,即2014-11-04 17:27:50.000+000

另一种方法是:

^{pr2}$

您可以对数据帧的列应用lambda函数,通过x['$date']从字典中提取日期,然后只获取日期/时间部分(忽略时间偏移)。由于这是一个“datetime naive”对象,Python不知道如何处理任何时区调整。使用这个剥离的日期/时间字符串(例如“2014-11-04T17:27:50.000”)作为strptime的输入。在

import datetime as dt

df = pd.DataFrame({'deviceId': {0: '1224EG12', 1: '1224EG13'},
 'readingtime': {0: {u'$date': u'2014-11-04T17:27:50.000+0000'},
  1: {u'$date': u'2014-11-04T17:27:50.000+0000'}}})

>>> df
   deviceId                                  readingtime
0  1224EG12  {u'$date': u'2014-11-04T17:27:50.000+0000'}
1  1224EG13  {u'$date': u'2014-11-04T17:27:50.000+0000'}


>>> df.readingtime.apply(lambda x: dt.datetime.strptime(x['$date'][:-7], 
                                                        '%Y-%m-%dT%H:%M:%S.%f')) 
0   2014-11-04 17:27:50
1   2014-11-04 17:27:50
Name: readingtime, dtype: datetime64[ns]

相关问题 更多 >

    热门问题