首页 > 解决方案 > 从 Pandas 列中删除时间戳

问题描述

我正在使用以下包含Date |TimeStamp | Name | Message为字符串的 DataFrame 列

59770        [08/10/18, 5:57:43 PM] Luke: Message
59771   [08/10/18, 5:57:48 PM] Luke: Message
59772     [08/10/18, 5:57:50 PM] Luke: Message

我正在尝试从列中删除时间戳,我的预期输出是:

59770   Luke: Message
59771   Luke: Message
59772   Luke: Message

我尝试使用

import re
df.iloc[:,0] = list(map(lambda x : re.sub(".*\d:\d\d\s[a|p]m","", x)[12:],df.iloc[:,0]))

但是由于每个字符串的长度不同,这种方法会使情况变得更糟。

请指教。

标签: pythonpandas

解决方案


您可以使用提取字符串功能。几个选项取决于您希望获得结果的方式。

df = pd.DataFrame({'text':['5:57:43 PM] Luke: Message',
                           '5:57:48 PM] Luke: Message',
                           '5:57:50 PM] Luke: Message']})
import re
import pandas as pd

df['text'].str.extract(r'\s*(.{10})](.*)')
            0               1
0  5:57:43 PM   Luke: Message
1  5:57:48 PM   Luke: Message
2  5:57:50 PM   Luke: Message

或者,如果您希望将名称和消息分开:

df['text'].str.extract(r'\s*(.{10})](.*):(.*)')
            0      1         2
0  5:57:43 PM   Luke   Message
1  5:57:48 PM   Luke   Message
2  5:57:50 PM   Luke   Message

推荐阅读