真是心累啊嗡呼,這種鬼問題困擾了快一天,百度各種搜不到答案皇耗,全是在說read_csv加encoding gbk2312或者gbk的南窗,逗我。。万伤。窒悔。。敌买。
最后求助谷歌爸爸才解決简珠,某度司個媽吧,就知道收推廣費虹钮,推薦都是什么垃圾聋庵,醉了 - -
問題
數(shù)據(jù)如下
我需要把age欄的中文全部去掉,替換成數(shù)字芙粱,0祭玉,1,2等等
直接對Series進行replace("15歲以下",0)是失敗的春畔,因為和解碼有關(guān)脱货,python不認(rèn)識你的中文字符。
解決辦法
很簡單律姨,在"15歲以下"前面加一個u振峻,即u"15歲以下",這樣python就知道你是替換的是中文线召,從而對應(yīng)解碼
user = pd.read_csv("input/JData_User.csv",encoding="gbk")
user.info(null_counts = True)
可以看到,現(xiàn)在age的類型是object
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 103616 entries, 0 to 103615
Data columns (total 5 columns):
user_id 103616 non-null int64
age 103616 non-null object
sex 103616 non-null int64
user_lv_cd 103616 non-null int64
user_reg_dt 103616 non-null object
dtypes: int64(3), object(2)
memory usage: 4.0+ MB
對中文進行替換多矮,使用list缓淹,進行批量替換,然后將age的類型轉(zhuǎn)換為int
user['age'].replace(["-1",u"15歲以下",u"16-25歲",u"26-35歲",u"36-45歲",u"46-55歲",u"56歲以上"] , [-1,0,1,2,3,4,5] , inplace=True)
user['age']=user['age'].astype(int)
user.info(null_counts=True)
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 103616 entries, 0 to 103615
Data columns (total 5 columns):
user_id 103616 non-null int64
age 103616 non-null int64
sex 103616 non-null int64
user_lv_cd 103616 non-null int64
user_reg_dt 103616 non-null object
dtypes: int64(4), object(1)
memory usage: 4.0+ MB
查看數(shù)據(jù),轉(zhuǎn)換成功