Skip to main content
 首页 » 编程设计

python之Pandas 列内的映射值

2025年05月04日22birdshome

我使用下面的代码将 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