我有一个熊猫数据框,看起来如下所示
df = pd.DataFrame({'person_id': [11,11,11,11,11,11],
'details':['DOSE: 667 mg - TDS with food - Inject','DOSE: 667 mg - TDS with food - PO PRN Test','DOSE: 667 mg - TDS with food - Tube','DOSE: 667 mg - TDS with food - Inject hypo gdksajgfkjsagf > 4 test value here','DOSE: 667 mg - TDS with food - Tube START 10:00 AM','DOSE: 667 mg - TDS with food - PO QTY removed']})
我想根据下面的逻辑从details
列中删除部分文本
a)如果文本值包含PRN
、Hypo
、START
或QTY removed
等关键字,则删除这些关键字后面的所有内容关键字也可以是小写或大写
我在尝试下面的东西
df['text'].str.rsplit(r'prn|hypo|start|qty removed', 1).str.get(0) # this doesn't work
我希望我的输出如下所示。请注意,我的datatset有400-500万条记录,因此任何高效、优雅的方法都会非常有用
我们可以按顺序用{}做{a1}
不区分大小写
您可以使用
Series.str.replace
而不是rsplit
:见regex demo。详情:
(?i)
-使正则表达式搜索不区分大小写的内联修饰符\s*
-零个或多个空格字符\b
-一个完整的单词标记,单词边界(prn|hypo|start|qty removed)
-一组可选字符串(捕获,您可以通过将(
替换为(?:
将其转换为非捕获).*
-行的其余部分(除换行符以外的任何零个或多个字符,尽可能多)李>相关问题 更多 >
编程相关推荐