python - Pandas 从列中删除所有特殊字符

标签 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' object is not iterable

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

最佳答案

使用 DataFrame.replace 首先是 <% :

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

或按所有非数值:

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

然后设置为float s 没有第一个的所有列:

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

关于python - Pandas 从列中删除所有特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55299583/

相关文章:

python - 如何增加matplotlib中axis_artist的箭头大小

python - 在浏览器中显示图像的简单 python 3 Web 服务器

r - 将方阵分解成对

r - 所有数值变量的平均值的组间差异

r - 对于每个 ID,返回 r 中起始列的最早日期和结束列的最晚日期

python - 构建 python 项目的非常*简单*的方法是什么?

Python SocketServer 监听多播

python - 将基于 pandas python 中重复列的数据集分组为列表

python - 透视/取消堆叠具有重复条目的 DataFrame,无需聚合

Python:如果不是字符串,请使用重新输入输入并将用户输入转换为小写