我有一个数据框,其中的列包含换行符,换行符和列表编号的字符串:
df['Side_Effects'][0]
'1.Nausea\n<br/>2.Vomiting\n<br/>3.Diarrhoea\n<br/>4.Anorexia\n<br/>5.Malaise\n<br/>6.Fever\n<br/>7.Pruritis\n<br/>8.Rash\n<br/>9.Headache\n<br/>10.Pharyngitis\n<br/>11.Cough\n<br/>'
首先,我必须从列的所有字符串中删除编号,换行符和br标签。 我尝试过:
df['Side_Effects'].replace(r'\\n',' ', regex=True, inplace=True)
这:
df['Side_Effects'] = df['Side_Effects'].str.replace('</br>','')
但似乎没有任何效果……将不胜感激!!!
答案 0 :(得分:2)
使用正则表达式和str
方法
例如:
df = pd.DataFrame({'Col': ['1.Nausea\n<br/>2.Vomiting\n<br/>3.Diarrhoea\n<br/>4.Anorexia\n<br/>5.Malaise\n<br/>6.Fever\n<br/>7.Pruritis\n<br/>8.Rash\n<br/>9.Headache\n<br/>10.Pharyngitis\n<br/>11.Cough\n<br/>']})
df['New'] = df['Col'].str.replace('(<br/>|\d+\.)','').str.split().agg(" ".join) #IF you need as list skip .agg(" ".join)
print(df)
输出:
Col New
0 1.Nausea\n<br/>2.Vomiting\n<br/>3.Diarrhoea\n<... Nausea Vomiting Diarrhoea Anorexia Malaise Fev...
答案 1 :(得分:2)
您可以使用
df['Side_Effects'] = df['Side_Effects'].str.replace(r'(?m)^(?:<br/>)?\d+\.|<br/>', '').str.strip()
请参见regex demo
详细信息
(?m)^
-行的开头((?m)
是re.M
/ re.MULTILINE
标志的内联变体)(?:<br/>)?
-可选的<br/>
字符串\d+\.
-1个或多个数字,然后是.
|
-或<br/>
-仅<br/>
字符串。 .str.strip()
删除所有结尾的空格。