pandas 将表示时间戳列表的字符串转换为时间戳列表

9nvpjoqh  于 2022-12-17  发布在  其他
关注(0)|答案(3)|浏览(113)

我有一个代表时间戳列表的字符串输入。这样的字符串的一个例子如下所示:
'[时间戳(' 2022年8月13日17:25:00 '),时间戳(' 2022年8月13日18:02:00 '),时间戳(' 2022年8月13日18:46:00 ')]'
我需要用python把它转换成一个时间戳列表,我怎样才能用正确的方法做到呢?

zvokhttg

zvokhttg1#

由于您标记了pandas,因此可以使用pd.Series构造函数和pd.to_datetime来处理此问题。
试试这个:

import pandas as pd

s = "[Timestamp('2022-08-13 17:25:00'), Timestamp('2022-08-13 18:02:00'), Timestamp('2022-08-13 18:46:00')]"

L = (
        pd.Series(s.strip("[]").split(","))
            .str.extract("'(.*)'", expand=False)
            .apply(pd.to_datetime)
            .to_list()
    )
#输出:
print(L)

[Timestamp('2022-08-13 17:25:00'), Timestamp('2022-08-13 18:02:00'), Timestamp('2022-08-13 18:46:00')]
0dxa2lsx

0dxa2lsx2#

一个没有Pandas的解决方案,使用regex来识别大字符串中的相关字符串,然后datetime.strptime将它们转换为实际的datetime:

tstring = "[Timestamp('2022-08-13 17:25:00'), Timestamp('2022-08-13 18:02:00'), Timestamp('2022-08-13 18:46:00')]"

import re
from datetime import datetime as dt
dtstrings = re.findall(r"\('([^,]*)'\)",tstring)
datetimes = [dt.strptime(x,'%Y-%m-%d %H:%M:%S') for x in dtstrings]

datetimes
# Out[84]: [datetime.datetime(2022, 8, 13, 17, 25),
# datetime.datetime(2022, 8, 13, 18, 2),
# datetime.datetime(2022, 8, 13, 18, 46)]
brccelvz

brccelvz3#

一种没有Pandas的方法,生成一系列时间戳:

timestamps="[Timestamp('2022-08-13 17:25:00'), Timestamp('2022-08-13 18:02:00'), 
Timestamp('2022-08-13 18:46:00')]"
# remove square brackets from string and split on "," to create a list from string
timestamps = timestamps[1 :-1 : ].split(", ")
# remove timestamp substrings
dates_ = [elem.replace("Timestamp('","").replace("')","") for elem in 
timestamps]
import datetime
#as datetime
ts_as_datetime = [datetime.datetime.strptime(elem, '%Y-%m-%d %H:%M:%S') for elem in dates_]

#and finally as Timestamp as required:
ts_as_timestamp = [datetime.datetime.timestamp(element) for element in ts_as_datetime]

问候你,乔霍娜。

相关问题