我有一个通过调查构成的数据框(df1),参与者在其中输入了他们的性别作为字符串,因此其中的性别列如下所示:
id gender age
1 Male 19
2 F 22
3 male 20
4 Woman 32
5 female 26
6 Male 22
7 make 24
等
我一直在使用
df1.replace('male', 'Male')
例如,但这确实很笨拙,并且涉及知道每个响应的确切格式以对其进行修复。
我一直在尝试在Pandas中使用各种字符串理解和字符串操作,例如.split(),.replace()和.capitalize(),并使用np.where()尝试获取:>
id gender age
1 Male 19
2 Female 22
3 Male 20
4 Female 32
5 Female 26
6 Male 22
7 Male 24
我确定必须有一种使用正则表达式来执行此操作的方法,但是我似乎无法正确获取代码。
我知道这可能是一个多步骤的过程,即删除“”,然后将条目大写,然后替换大写的值。
任何指导都将受到pythonista的赞赏!
Kev
答案 0 :(得分:0)
调整我注释中的代码,以将以f开头的所有记录替换为Female:
df1["gender"] = df1.gender.apply(lambda s: re.sub(
"(^F)([A-Za-z]+)*", # pattern
"Female", # replace
s.strip().title()) # string
)
与F相似,在模式中为M,并用Male替代Male。