首页 > 解决方案 > 使用 .map() 修改多个 Pandas 列

问题描述

我正在尝试修改所有是和否都变为 1 和 0 的几列:

df['Outbreak Associated', 'FSA'] = df['Outbreak Associated', 'FSA'].map({'yes': '1', 'no': '0'})

一次做一个是可行的,但是两个或更多是给我一个错误。我想我缺少一些简单的东西,但我想不出它是什么。

KeyError: ('Outbreak Associated', 'FSA')

有什么想法吗?

标签: pythonpandas

解决方案


你可以使用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.stackand 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)

推荐阅读