2017-08-07 321 views
-1

我有一个数据帧,其中包括列df['date'] and df['time']转换熊猫系列的字符串转换日期时间

这是我在一个名为列已经把df['datetime']

输出如下所示:2017-04-12 17:30:18.733

我的最终目标是将其转换为字符串Wed, 12 Apr 2017 17:30:18 733

当我尝试不同的方法作为pd.to_datetime()它告诉我我需要它t o是一个字符串。

,我无法找到全列变成一串字符串

我打过电话.astype(str).apply(str)

有什么建议的方法?

+0

请问您可以发布您的代码吗? – EsotericVoid

+0

尝试'.apply(pd.to_datetime).apply()'到日期时间系列 –

+0

'df [['date','time','datetime']]。信息()'?你的列是什么类型? – Alexander

回答

0

使用这样的事情:

df.apply(lambda x: x.datetime.strftime('%D %d ...the format you want...')) 
1

你正在采取的字符串(一个在date列和其他在time列),用空格一起加入他们创建一个新的日期时间字符串(如"2017-04-12 17:30:18.733")。然后,您使用strptime将此字符串解析为日期时间对象。我使用了一个可以包含微秒或不包含的表单。您现在使用'strftime'来将此日期时间对象解析回您想要的字符串格式。

from datetime import datetime 

df = pd.DataFrame({'date': ['2017-04-12', '2017-04-13'], 
        'time': ['17:30:18.733', '07:30:18']}) 


def date_parser(date_string): 
    try: 
     timestamp = datetime.strptime(date_string, '%Y-%m-%d %H:%M:%S.%f') 
     timestamp = timestamp.strftime('%a, %d %b %Y %H:%M:%S %f')[:-3] 
    except ValueError: 
     timestamp = datetime.strptime(date_string, '%Y-%m-%d %H:%M:%S') 
     timestamp = timestamp.strftime('%a, %d %b %Y %H:%M:%S 000') 
    return timestamp 

df['datetime_str'] = (df['date'] + ' ' + df['time']).apply(lambda x: date_parser(x)) 

>>> df 
     date   time     datetime_str 
0 2017-04-12 17:30:18.733 Wed, 12 Apr 2017 17:30:18 733 
1 2017-04-13  07:30:18 Thu, 13 Apr 2017 07:30:18 000 
+0

格式当我运行它,它说:“ValueError异常”实时数据“2017年4月12日”不不符合格式'%Y-%m- $ d%H:%M:%S' –

+0

等待有进展.. 将更新!谢谢你到目前为止! –

+0

我转换DF [“日期”]和df [“时间”]为日期时间对象而现在的错误我得到的是不兼容的类型[