Python:对dataframe应用regex,datetime列为列

2024-06-16 09:39:14 发布

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

我有一个数据帧(^{cd1>}),如下所示

Index     Month     Time       Text_1          Text_2                 Text_3
  0      02/2019   19:44:33   aadd@34:9984    (none)\       62fa6297-f5f5-4c47-8236-4a85cad5e601
                                             STBROWN2-M-26YQ
  1      02/2019   19:30:22   58:EF:68:14    (none)\        f933fb2a-4dde-a547-80ca-3b9e6cd29a6d
                                             STBROWN2-M-26YQ

我写了一个简单的regex,如下所示

^{pr2}$

然后,我将上述内容应用于^{cd1>}

^{pr3}$

我收到以下错误:

^{pr4}$

这可能是因为^{cd3>}和^{cd4>}列,因为它们是^{{cd5>}对象。

我的问题是:如何在忽略datetimes的同时应用regex?


Tags: 数据textnoneindextimeregexcd1ef
2条回答

在您的数据中,我认为所有数据都是字符串,但是如果要排除datetimes列,请使用^{}

def clean(text):
    return text.str.lower().str.replace('[^A-Za-z0-9]', '')

#filter only object columns
mask = df.dtypes == 'object'
#filter Text columns if possible
#mask = df.columns.startswith('Text')

df.loc[:, mask] = df.loc[:, mask].apply(clean)

使用筛选器选择以文本开头的列

def clean(text):
    text = text.str.lower()
    text_clean = text.str.replace('[^A-Za-z0-9]', ' ', regex = True)
    return text_clean
df.assign(**df.filter(like = 'Text').apply(clean))

相关问题 更多 >