我使用下面的代码将 S 列中的 2 个值映射到 0,但没有成功。关于如何解决这个问题的任何建议? N.B:我想在 map 内部实现一个外部函数。
df = pd.DataFrame({
'Age': [30,40,50,60,70,80],
'Sex': ['F','M','M','F','M','F'],
'S' : [1,1,2,2,1,2]
})
def app(value):
for n in df['S']:
if n == 1:
return 1
if n == 2:
return 0
df["S"] = df.S.map(app)
最佳答案
使用 eq
创建一个 bool 系列并使用 astype
将该 bool 系列转换为 int:
df['S'] = df['S'].eq(1).astype(int)
或
df['S'] = (df['S'] == 1).astype(int)
输出:
Age Sex S
0 30 F 1
1 40 M 1
2 50 M 0
3 60 F 0
4 70 M 1
5 80 F 0
关于python - Pandas 列内的映射值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51527264/