首页 > 解决方案 > 在 Python Pandas 数据框中寻找更智能的方法来处理多个版本的值

问题描述

我正在研究 Python 数据操作,并且有一列包含表示相同值的各种值。

在此处输入图像描述

我确实检查了唯一值,它们是数组(['Male','male','m','FEMALE','female','F','M','Female'],dtype = object)

请建议我如何将其替换为一个版本。

下面是我尝试过的代码,但是这样的字段更多,所以寻找聪明的方法。

df['Gender'] = df['Gender'].replace(to_replace =["Male", "male", "m", "M"], value ="Male")
#similar code for Female value.

我正在使用的另一种方法是

df['Gender'] = np.where(df['Gender'].str.lower() == 'male', 'Male', df.Gender)
df['Gender'] = np.where(df['Gender'].str.lower() == 'm', 'Male', df.Gender)
df['Gender'] = np.where(df['Gender'].str.lower() == 'female', 'Female', df.Gender)
df['Gender'] = np.where(df['Gender'].str.lower() == 'f', 'Female', df.Gender)

标签: python-3.xpandas

解决方案


您可以尝试使用嵌套的numpy.where,

df['Gender']=np.where(df.Gender.str.lower().str.startswith('m'),'Male',np.where(df.Gender.str.lower().str.startswith('f'),'Female',df.Gender))

但是在您的情况下,唯一条目仅包含“男性”和“女性”的不同表示形式,并且没有空值,因此对您来说非常简单快捷的解决方案可能是这样的。

df['Gender']=np.where(df.Gender.str.lower().str.startswith('m'),'Male','Female')

推荐阅读