通过分隔符计数和位置从数据框中提取特定文本

时间:2016-05-01 18:50:06

标签: python regex substring

学习正则表达式,偶然发现了一点墙。 我有以下数据框:

item_data=pandas.DataFrame({'item':['001','002','003'],
'description':['Fishing,Hooks,12-inch','Fishing,Lines','Fish Eggs']})

对于每个描述,我想在第二个逗号“,”之前提取所有内容。如果没有逗号,则保留原始描述

结果应如下所示:

item_data=pandas.DataFrame({'item':['001','002','003'],
'description':['Fishing,Hooks,12-inch','Fishing,Lines','Fish Eggs'],
'new_description':['Fishing,Hooks','Fishing,Lines', 'Fish Eggs']})

任何指针都会非常感激。

感谢。

2 个答案:

答案 0 :(得分:1)

new_description = [",".join(i.split(",")[:2]) for i in item_data['description']]

答案 1 :(得分:1)

使用正则表达式...

re.sub("^([^,]*,[^,]*),.*$", "\\1", x)

意思是

  • ^字符串开头
  • (开始捕获
  • [^,]除了逗号外的任何内容
  • *零次或多次
  • ,逗号
  • [^,]除了逗号外的任何内容
  • *零次或多次
  • )捕获结束
  • ,另一个逗号
  • .*任何
  • $字符串结尾

替换第1组(\1)的内容会删除第二个逗号后出现的内容