作者DNSKHY (平生无大志,但求拾叁趴)
看板Python
标题Re: [问题] 从str中取出非数值
时间Tue Sep 4 21:13:47 2018
※ 引述《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://webptt.com/cn.aspx?n=bbs/Python/M.1536066832.A.100.html
1F:推 tzjnrsnh: 非常感谢你 09/04 22:19
2F:→ woogee: df.交易金额[~df.交易金额.str.isnumeric()] = 0.0 09/05 23:15