【问题标题】:Pandas removing all special characters from columns熊猫从列中删除所有特殊字符
【发布时间】:2019-08-13 10:31:21
【问题描述】:

我有一个带有“%”列的数据框是所有列,一列的最后一行有“

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' 对象不可迭代

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

【问题讨论】:

    标签: python pandas data-manipulation


    【解决方案1】:

    &lt;% 首先使用DataFrame.replace:

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

    或所有非数值:

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

    然后将所有列设置为floats,没有first:

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

    【讨论】:

    • 谢谢!我能够删除特殊字符,但转换为浮点数没有运气。这是我得到的错误:'ValueError:无法将字符串转换为浮点数:'。尝试使用 .astype(int) 转换为 int 并抛出此错误: ValueError: invalid literal for int() with base 10: ' '
    • @aRad - df = df.replace([r'[&lt;%]', r'^\s*$'], ['',np.nan], regex=True) 的工作情况如何?
    • 它将空字符串替换为NaN
    猜你喜欢
    • 2021-03-29
    • 1970-01-01
    • 1970-01-01
    • 2019-10-01
    • 2018-02-02
    • 1970-01-01
    • 2017-10-01
    • 1970-01-01
    相关资源
    最近更新 更多