python - 使用 .map() 修改多个 Pandas 列
问题描述
我正在尝试修改所有是和否都变为 1 和 0 的几列:
df['Outbreak Associated', 'FSA'] = df['Outbreak Associated', 'FSA'].map({'yes': '1', 'no': '0'})
一次做一个是可行的,但是两个或更多是给我一个错误。我想我缺少一些简单的东西,但我想不出它是什么。
KeyError: ('Outbreak Associated', 'FSA')
有什么想法吗?
解决方案
你可以使用replace
,但如果没有匹配得到原始值,而NaN
不是map
:
cols = ['Outbreak Associated', 'FSA']
df[cols] = df[cols].replace({'yes': '1', 'no': '0'})
解决方案- 您可以使用 lambdaSeries.map
函数循环每一列:DataFrame.apply
df[cols] = df[cols].apply(lambda x: x.map({'yes': '1', 'no': '0'}))
或使用DataFrame.stack
and
Series.unstack
:
df[cols] = df[cols].stack().map({'yes': '1', 'no': '0'}).unstack()
或者map
分别用于每一列;):
d = {'yes': '1', 'no': '0'}
df['Outbreak Associated'] = df['Outbreak Associated'].map(d)
df['FSA'] = df['FSA'].map(d)
推荐阅读
- facebook - 缺少以下必需属性:og:url、og:type、og:title、og:image、og:description、fb:app_id
- visual-studio-code - 如何在 vs-code 任务中将路径从 C:\... 转换为 /c/...?
- r - 更改 plot(varImp()) 中的字体类型
- android - Android 发送带有多个附件的电子邮件问题
- performance - 移动网络上的 HTTP/2 浏览器请求一次往返有多少字节?
- javascript - 如何添加多个模态
- java - java servelt打包项目遇到的错误
- javascript - 当 MIME 类型为空时,Rails Active Storage 会阻止上传
- unit-testing - 如何使用 dotnet test 通过单个通过/失败摘要从多个库运行测试
- visual-studio - 如何在 Visual Studio 2019 C++ 中隐藏在宏名称下划线的三个点