python-3.x - 在 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)
解决方案
您可以尝试使用嵌套的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')
推荐阅读
- javascript - 在 Svelte 组件中切换类
- python - 对 Pandas DataFrame.apply() 的困惑
- javascript - Javascript 访问剪贴板,没有 http/local 文件上的事件
- flutter - 无法通过调用 ScaffoldState().removeCurrentSnackBar() 来移除当前的小吃店
- c++ - 未从编译静态库 C++(Linux 内核)中获取 .a 文件
- c++ - 模块最终允许标准库实现中的可读名称吗?
- node.js - 我收到 TypeError: Cannot read property 'numberOfSuits' of undefined 当我运行下面的代码在我的 firebase 数据库上发布新订单时
- json - 高效的 MongoDB 查询从一个集合中获取报告并插入到另一个集合中
- javascript - 如何使用 VSCode 扩展运行 Jest 测试?
- javascript - JavaScript 使用新 URL 更改地址栏而不重新加载页面