使用python中的Regex在csv单元中的抽象值

时间:2019-04-29 21:02:18

标签: python regex csv

我正在从csv列中提取数字值,例如:

column=[None, you earn 5%] 

如果可以将“ None”存储为0,第二个仅存储5%,那就太好了。

我尝试使用以下代码转移%。但这会引发错误

  

“ TypeError:预期的字符串或类似字节的对象”

data.loc[(data['column'] == re.findall(r'([\w]+)', data['column'])), 'disc'] = re.findall(r'([0-9]+\%)',data['column'])

并进行循环。但是似乎没有帮助

def fs(a):
    for i in a:
        if i == 'None':
            a[i] = 0
        else:
            a[i]=re.search(r'(?<=\().+?(?=\))', a[i])

1 个答案:

答案 0 :(得分:0)

如果您的数据框包含一个字符串列,并且您想将字符串“ None”替换为0,并同时保留数字和%,请执行以下操作:

df.textColumn.str.replace("None","0").str.replace("[^0-9.%]", "")

示例:

import pandas as pd

df = pd.DataFrame({'n':[1,2,3,4], 'text':["None","you earn 5%", "this is 3.4%", "5.5"]})

df['text'] = df.text.str.replace("None","0").str.replace("[^0-9.%]", "")

df

n   text
0   1   0
1   2   5%
2   3   3.4%
3   4   5.5