我有一个数据框,其中所有列均为'%'列,而一列的最后一行为'<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”对象不可迭代
理想情况下,我想用一行代码删除整个数据框中的所有特殊字符。
答案 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)