[問題] 從str中取出非數值(已解決)

看板Python作者 (Sam Lee)時間5年前 (2018/09/04 13:01), 5年前編輯推噓6(603)
留言9則, 6人參與, 5年前最新討論串1/1
不好意思我是python新手,最近學習pandas資料分析,遇到了問題,想跟大家請教一下, 就是dataframe中有一個欄位是"交易金額",我查一下他的type全部都是屬於str, 我想把這個欄位變成數值形式(df["交易金額"].astype(float),但是發現裡面有許多包 含長的不是數值的字串(例如:?,!,@,英文字母..等等),所以導致無法轉成數值,如何將 這些長的不是數值的字串列出來,麻煩大家了,感恩。 p.s 也有試過 isdigit()的方法也是不行 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 117.19.233.238 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1536037279.A.863.html ※ 編輯: tzjnrsnh (117.19.233.238), 09/04/2018 13:04:06

09/04 13:08, 5年前 , 1F
試試''.join([s if s.isdigit() for s in string])?
09/04 13:08, 1F

09/04 13:14, 5年前 , 2F
用RE呢?
09/04 13:14, 2F

09/04 13:15, 5年前 , 3F
把不是0-9的都用 re.sub去掉
09/04 13:15, 3F

09/04 15:35, 5年前 , 4F
先用正規表示式抓出你要的,再轉成數值
09/04 15:35, 4F

09/04 18:02, 5年前 , 5F
關鍵:正規表示式 結案
09/04 18:02, 5F

09/04 22:20, 5年前 , 6F
感謝大家,已解決了
09/04 22:20, 6F
※ 編輯: tzjnrsnh (117.19.233.238), 09/04/2018 22:21:03

09/05 23:12, 5年前 , 7F
df.交易金額[~df.交易金額.str.isnumeric()]
09/05 23:12, 7F

09/05 23:14, 5年前 , 8F
也可以直接修改
09/05 23:14, 8F

09/05 23:14, 5年前 , 9F
df.交易金額[~df.交易金額.str.isnumeric()] = 0.0
09/05 23:14, 9F
文章代碼(AID): #1RZX6VXZ (Python)