我有一个带有“%”列的数据框是所有列,并且一列的最后一行有“<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/