Skip to main content
 首页 » 编程设计

python之Pandas map 函数返回 'NaN'

2025年05月04日32mayingbao

相关数据框:http://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data

我已经在 DataFrame 上手动添加了一个“性别”列,我试图用 0 替换“男性”,用 1 替换“女性”,但它似乎不起作用。我只是得到一个“NaN”值而不是 1 和 0。

相关代码:

df['sex'] = df['sex'].map({'Male': 0, 'Female': 1}) 

它似乎并不特定于“性别”列,因为这也不起作用:

df['success'] = df['success'].map({'<=50K': 0, '>50k':1}) 

有什么想法吗?

请您参考如下方法:

@ayhan 是正确的,空白导致了问题。一个更合适的解决方法是添加 skipinitialspace,当您使用 read_csv 读取数据时,它默认设置为 False .

df = pd.read_csv(io.StringIO(data), delimiter=',', skipinitialspace=True, header=None ) 
df[9] = df[9].map({'Male': 0, 'Female': 1}) 

会给我们(第 9 列是“性别”列):

   0                 1       2          3   4                   5   \ 
0  39         State-gov   77516  Bachelors  13       Never-married    
1  50  Self-emp-not-inc   83311  Bachelors  13  Married-civ-spouse    
2  38           Private  215646    HS-grad   9            Divorced    
 
                  6              7      8   9     10  11  12             13  \ 
0       Adm-clerical  Not-in-family  White   0  2174   0  40  United-States    
1    Exec-managerial        Husband  White   0     0   0  13  United-States    
2  Handlers-cleaners  Not-in-family  White   0     0   0  40  United-States    
 
      14   
0  <=50K   
1  <=50K   
2  <=50K