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

作者: DNSKHY (平生無大志,但求拾叁趴)   2018-09-04 21:13:47
※ 引述《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')
作者: tzjnrsnh (Sam Lee)   2018-09-04 22:19:00
非常感謝你
作者: woogee (woogee)   2018-09-05 23:15:00
df.交易金額[~df.交易金額.str.isnumeric()] = 0.0

Links booklink

Contact Us: admin [ a t ] ucptt.com