使用str理解功能清理熊猫数据框中的一列字符串

时间:2019-02-24 23:35:23

标签: python string pandas numpy data-cleaning

我有一个通过调查构成的数据框(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

1 个答案:

答案 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。

相关regex docs
Regex help