Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 删除特定模式之前的字符串部分_Python_Regex_Pandas - Fatal编程技术网

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

Python 删除特定模式之前的字符串部分,python,regex,pandas,Python,Regex,Pandas,我有一个熊猫数据框,其中有一个列,我必须在其中检索特定的名称。唯一的问题是,这些名称并不总是在同一个位置,并且该列的所有值的长度都不相同,因此我无法使用split函数。然而,我注意到在这些名字之前,总是有一个4到7位数的组合。我相信这是名字的标识符 那么,我如何使用正则表达式遍历该列并检索所需的名称呢。 以下是jupyter笔记本中的一个示例: df['info'] csx_Gb009_broken screen_231400_Iphone 7 000345_SamsungS8_tfes_

我有一个熊猫数据框,其中有一个列,我必须在其中检索特定的名称。唯一的问题是,这些名称并不总是在同一个位置,并且该列的所有值的长度都不相同,因此我无法使用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位数字的组合之前,以下划线结尾。

您可以使用

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

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