关于Pandas中使用中文名称替换大写城市字母简写出现Nan问题

df1['city'] = df1['city'].map({'BJ':'北京','SH':'上海','CQ':'重庆'})
df1




那是因为df1中城市名显示为NaN的那些城市不是字典中三个城市的缘故。

import pandas as pd 
df=pd.DataFrame({'city':['YT','BJ','SH','CQ'],'number':[11002,32100,28600,22387]})
#print(df)
df['city'] = df['city'].map({'BJ': '北京', 'SH': '上海', 'CQ': '重庆'})
#print(df)
df


city  number
0  NaN   11002
1   北京   32100
2   上海   28600
3   重庆   22387

 

可能是因为city这一列还有其他的分类, 如果数据量大,可以试试用nunique()看看有几类.

下面两种方法, 可以比较下replace替换和map替换的差异:

import pandas as pd
import numpy as np

data = pd.DataFrame({'city':['BJ','SH','CQ','WH','BJS']})

print(data['city'].nunique())

data['替换1'] =  data['city'].replace(['BJ','SH','CQ'],['北京','上海','重庆'])

data['替换2'] =  data['city'].map({'BJ':'北京','SH':'上海','CQ':'重庆'})
print(data)
  city  替换1  替换2
0   BJ   北京   北京
1   SH   上海   上海
2   CQ   重庆   重庆
3   WH   WH     NaN
4  BJS   BJS    NaN