熊猫从列中删除所有特殊字符

时间:2019-03-22 12:27:07

标签: python pandas data-manipulation

我有一个数据框,其中所有列均为'%'列,而一列的最后一行为'<1%'

Out[277]: 

   Year Conventional  HMO  PPO  POS HDHP/SO
0  1988          73%  16%  11%             
1  1993          46%  21%  26%   7%        
2  1996          27%  31%  28%  14%        
3  1999          10%  28%  39%  24%        
4  2000           8%  29%  42%  21%  6% 
.   .
.   . 
.   . 
22  2018          <1%  16%  49% 29%

我要删除列中的所有特殊特殊字符。我尝试过:

df1.columns= df1.columns.str.replace('\w,'') 

df.columns= df.columns.str.replace('[^a-zA-Z0-9]', '')

使用这两种方法,我都成功地摆脱了'%'符号。但不是“ <”。 做这样的事情:

df1['Conventional']= df1['Conventional'].map(lambda x: ''.join([i for i in x if i.isdigit()]))

引发错误:

  

TypeError:“ float”对象不可迭代

理想情况下,我想用一行代码删除整个数据框中的所有特殊字符。

1 个答案:

答案 0 :(得分:2)

首先由<%使用DataFrame.replace

df = df.replace(r'[<%]', '', regex=True)

或通过所有非数字值:

df = df.replace(r'\D+', '', regex=True)

然后将所有列设置为float,而无需先设置:

df.iloc[:, 1:] = df.iloc[:, 1:].astype(float)