问题描述
我有一个带有列的 Pandas 数据框,我必须在其中检索特定名称。
唯一的问题是,这些名称并不总是在同一个地方,并且这些列的所有值的长度都不相同,所以我不能使用 split 函数。
但是,我注意到在这些名称之前,总是有 4 到 7 位数字的组合。
我相信这是名称的标识符。
那么我如何使用正则表达式来浏览该列并检索我需要的名称。
这是 jupyter 笔记本中的一个示例:
df['info']
csx_Gb009_broken screen_231400_Iphone 7
000345_SamsungS8_tfes_Vodafone_is56t34_3G
Ins45_56003_Huawei P8_
我想要的是这样的:
df['Phones']
Iphone 7
SamsungS8
Huawei P8
我想知道这些名称在 4 到 7 位数字的组合之前并以下划线结尾,我想有类似的东西。
1楼
您可以使用
df['Phones'] = df['info'].str.extract(r'\d{4}_([^_]+)')
模式匹配:
-
\\d{4}
- 4 位数字 -
_
- 下划线 -
([^_]+)
- 捕获组 1(此值将由str.extract
返回):一个或多个除_
之外的字符。
请参阅。