Python 从数据框列中删除编号、换行符和打断标记
我有一个数据框,其中的列包含换行符、换行符和列表编号的字符串:Python 从数据框列中删除编号、换行符和打断标记,python,regex,pandas,Python,Regex,Pandas,我有一个数据框,其中的列包含换行符、换行符和列表编号的字符串: 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/&
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/>'
这是:
df['Side_Effects'] = df['Side_Effects'].str.replace('</br>','')
df['Side\u Effects']=df['Side\u Effects'].str.replace(“”,”)
但似乎什么都不管用。。。非常感谢您的帮助 使用正则表达式和
str
方法
Ex:
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...
df=pd.DataFrame({'Col':['1.恶心\n
2.呕吐\n
3.腹泻\n
4.厌食症\n
5.不适\n
6.发烧\n
7.瘙痒\n
8.皮疹\n
9.头痛\n
10.咽炎\n
11.咳嗽\n
df['New']=df['Col'].str.replace('(
\d+\),'').str.split().agg(“.join”)#如果需要as列表,请跳过.agg(“.join”)
打印(df)
输出:
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...
Col新
0 1.恶心\n
2.呕吐\n
3.腹泻\n您可以使用
df['Side_Effects'] = df['Side_Effects'].str.replace(r'(?m)^(?:<br/>)?\d+\.|<br/>', '').str.strip()
df['Side_-Effects']=df['Side_-Effects'].str.replace(r'(?m)^(?:
)?\d+\.
',''。str.strip()
看
详细信息
(?m)^
-行的开头((?m)
是re.m
/re.MULTILINE
标志的内联变体)
(?:
)?
-可选的
字符串
\d+\.
-1个或多个数字,然后是一个
|
-或
-只需
字符串
.str.strip()。另外,在第一个选项中,尝试用单个反斜杠切换双反斜杠one@Itay感谢
标签上的更正提示,它现在似乎可以工作了。但后一个仍然保持不变…我的意思是“\n”…预期的文本字符串是什么?我知道你发布的输入是一个字符串文字,其中\n
表示一个LF字符,对吗?df['Side\u Effects'].str.replace(r'(?m^(?:
))?\d+\.
,'
我认为也有帮助。