将panda列中的日期时间列表转换为字符串列表



我有以下pandas数据帧

import pandas as pd
import datetime
foo = pd.DataFrame({'id': [1,2], 'time' :['[datetime.datetime(2021, 10, 20, 14, 29, 51), datetime.datetime(2021, 10, 20, 14, 46, 8)]', '[datetime.datetime(2021, 10, 20, 15, 0, 44), datetime.datetime(2021, 10, 20, 16, 13, 42)]']})
foo
id   time
0   1   [datetime.datetime(2021, 10, 20, 14, 29, 51), datetime.datetime(2021, 10, 20, 14, 46, 8)]
1   2   [datetime.datetime(2021, 10, 20, 15, 0, 44), datetime.datetime(2021, 10, 20, 16, 13, 42)]

我想将time列中列表的每个元素转换为'%Y/%m/%d %H:%M:%S'格式的字符串

我知道我能做到:

t = datetime.datetime(2021, 10, 20, 14, 29, 51)
t.strftime('%Y/%m/%d %H:%M:%S')

以产生值'2021/10/20 14:29:51'

但我不知道如何对CCD_ 5列中每个列表的每个字符串元素执行此操作。

有什么帮助吗?

使用eval:将字符串列表转换为实际列表后,您只需要在apply中使用列表理解

foo.time.apply(lambda str_list: [item.strftime('%Y/%m/%d %H:%M:%S') for item in eval(str_list)])

您可以先使用explode将列表分隔成行,然后在pandas:中使用dt访问器

(foo
.explode('time')
.assign(time=lambda x: x.time.dt.strftime('%Y/%m/%d %H:%M:%S'))
)

最新更新