Re: [問題] 從str中取出非數值

看板Python作者 (平生無大志,但求拾叁趴)時間6年前 (2018/09/04 21:13), 編輯推噓1(101)
留言2則, 2人參與, 6年前最新討論串1/1
※ 引述《tzjnrsnh (Sam Lee)》之銘言: : 不好意思我是python新手,最近學習pandas資料分析,遇到了問題,想跟大家請教一下, : 就是dataframe中有一個欄位是"交易金額",我查一下他的type全部都是屬於str, : 我想把這個欄位變成數值形式(df["交易金額"].astype(float),但是發現裡面有許多包 : 含長的不是數值的字串(例如:?,!,@,英文字母..等等),所以導致無法轉成數值,如何將 : 這些長的不是數值的字串列出來,麻煩大家了,感恩。 : p.s 也有試過 isdigit()的方法也是不行 我也是最近在學pandas, 你的問題應該可以先用re把非數字和數字區隔出來,然後 再用read_excel裡的converters argument處理即可 import re import pandas as pd re_num=re.compile(r'^[+-]?\d+\.?\d*$') def convert_str_to_float(cell) if re_num.search(str(cell)) != None: return float(cell) else: return cell df=pd.read_excel('filename','sheetname') column_list=df.columns for x in list(column_list): df2=pd.read_excel('filename','sheetname',converters={x:convert_str_to_float}) df2.to_excel('filename',sheet_name='sheetname') -- [杜鵑不啼,我等到牠啼...] 多數人不如家康,不是耐心不夠,就是錯把麻雀當杜鵑... -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.137.222.162 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1536066832.A.100.html

09/04 22:19, 6年前 , 1F
非常感謝你
09/04 22:19, 1F

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