在特定模式之前删除字符串的一部分

时间:2018-09-23 21:45:56

标签: python regex 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 个答案:

答案 0 :(得分:1)

您可以使用

df['Phones'] = df['info'].str.extract(r'\d{4}_([^_]+)')

模式匹配:

  • \d{4}-4位数字
  • _-下划线
  • ([^_]+)-捕获组1(此值将由str.extract返回):除_以外的一个或多个字符。

请参见regex demo