在中使用regex更改数据集列中的值

2024-04-20 08:56:59 发布

您现在位置:Python中文网/ 问答频道 /正文

这是数据帧的子集:

Index     duration 
1          4  months20mg 1X D
2          1  years10 1X D
3          2  weeks10 mg
4          8  years300 MG 1X D
5          20  days
6          10  months

输出应如下所示:

Index     duration 
1          4  month
2          1  year
3          2  week
4          8  year
5          20  day
6          10  month

这是我的密码:

df.dosage_duration.replace(r'year[0-9a-zA-z]*' , 'year', regex=True)
df.dosage_duration.replace(r'day[0-9a-zA-z]*' , 'day', regex=True)
df.dosage_duration.replace(r'month[0-9a-zA-z]*' , 'month', regex=True)
df.dosage_duration.replace(r'week[0-9a-zA-z]*' , 'week', regex=True)

但它不起作用。有什么建议吗?你知道吗


Tags: 数据truedfindexyear子集replaceregex
1条回答
网友
1楼 · 发布于 2024-04-20 08:56:59

有两个问题。你知道吗

第一个问题是正则表达式没有匹配所有需要匹配的部分。请看months20mg 1X D-您要替换的零件中有一个空格。我想你可以用'year.*'作为你的对手。你知道吗

第二个是调用replace,而不存储结果。如果希望按现有方式进行调用,则应指定inplace=True。你知道吗

如果使用稍微扩展的正则表达式,也可以使用单个调用。我们可以使用\1来引用正则表达式的第一个匹配组。分组用括号表示:

df.dosage_duration.replace(r'(year|month|week|day).*' , r'\1', 
                           regex=True, inplace=True)

相关问题 更多 >