Python 从dataframe列的所有行中删除%symbol,并将整个列值转换为浮点值

Python 从dataframe列的所有行中删除%symbol,并将整个列值转换为浮点值,python,string,pandas,Python,String,Pandas,名为“int.rate”的数据帧列的值如下:11.26%、13.67%、,。。。。。其中,我需要从“int.rate”列的所有行中删除“%”符号,并将整列值转换为浮点值。我已经尝试过上面提到的所有其他代码,但即使它们也会抛出错误,因此我需要知道此任务的确切代码。请帮忙!下面是我尝试的代码: x = data['int.rate'].str.split('%').astype(float) 给 --------------------------------------------------

名为“int.rate”的数据帧列的值如下:11.26%、13.67%、,。。。。。其中,我需要从“int.rate”列的所有行中删除“%”符号,并将整列值转换为浮点值。我已经尝试过上面提到的所有其他代码,但即使它们也会抛出错误,因此我需要知道此任务的确切代码。请帮忙!下面是我尝试的代码:

x = data['int.rate'].str.split('%').astype(float)

 ---------------------------------------------------------------------------
    ValueError                                Traceback (most recent call last)
    <ipython-input-1-52f9e2c36b19> in <module>()
          4 
          5 #Code starts here
    ----> 6 x = data['int.rate'].str.split('%').astype(float)
          7 print(x)
    /opt/greyatom/kernel-gateway/runtime-environments/python/lib/python3.6/site-packages/pandas/util/_decorators.py in wrapper(*args, **kwargs)
        176                 else:
        177                     kwargs[new_arg_name] = new_arg_value
    --> 178             return func(*args, **kwargs)
        179         return wrapper
        180     return _deprecate_kwarg
    /opt/greyatom/kernel-gateway/runtime-environments/python/lib/python3.6/site-packages/pandas/core/generic.py in astype(self, dtype, copy, errors, **kwargs)
       4999             # else, only a single dtype is given
       5000             new_data = self._data.astype(dtype=dtype, copy=copy, errors=errors,
    -> 5001                                          **kwargs)
       5002             return self._constructor(new_data).__finalize__(self)
       5003 
    /opt/greyatom/kernel-gateway/runtime-environments/python/lib/python3.6/site-packages/pandas/core/internals.py in astype(self, dtype, **kwargs)
       3712 
       3713     def astype(self, dtype, **kwargs):
    -> 3714         return self.apply('astype', dtype=dtype, **kwargs)
       3715 
       3716     def convert(self, **kwargs):
    /opt/greyatom/kernel-gateway/runtime-environments/python/lib/python3.6/site-packages/pandas/core/internals.py in apply(self, f, axes, filter, do_integrity_check, consolidate, **kwargs)
       3579 
       3580             kwargs['mgr'] = self
    -> 3581             applied = getattr(b, f)(**kwargs)
       3582             result_blocks = _extend_blocks(applied, result_blocks)
       3583 
    /opt/greyatom/kernel-gateway/runtime-environments/python/lib/python3.6/site-packages/pandas/core/internals.py in astype(self, dtype, copy, errors, values, **kwargs)
        573     def astype(self, dtype, copy=False, errors='raise', values=None, **kwargs):
        574         return self._astype(dtype, copy=copy, errors=errors, values=values,
    --> 575                             **kwargs)
        576 
        577     def _astype(self, dtype, copy=False, errors='raise', values=None,
    /opt/greyatom/kernel-gateway/runtime-environments/python/lib/python3.6/site-packages/pandas/core/internals.py in _astype(self, dtype, copy, errors, values, klass, mgr, **kwargs)
        662 
        663                 # _astype_nansafe works fine with 1-d only
    --> 664                 values = astype_nansafe(values.ravel(), dtype, copy=True)
        665                 values = values.reshape(self.shape)
        666 
    /opt/greyatom/kernel-gateway/runtime-environments/python/lib/python3.6/site-packages/pandas/core/dtypes/cast.py in astype_nansafe(arr, dtype, copy)
        728 
        729     if copy:
    --> 730         return arr.astype(dtype, copy=True)
        731     return arr.view(dtype)
        732 
    ValueError: setting an array element with a sequence.
使用“替换”而不是“拆分”。请参阅演示代码:

作为pd进口熊猫 初始化列表列表 数据=['tom','10.2%'],['nick','15.7%'],['juli','14.67%]] 创建数据帧 df=pd.DataFramedata,列=['Name','Interest'] 打印数据帧。 df 名称利息 0.10.2% 1.15.7% 2朱利14.67% df.info 范围索引:3个条目,0到2 数据列共2列: 列非空计数数据类型 -- --- ------- --- 0名称3非空对象 1兴趣3非空对象 数据类型:object2 内存使用:176.0+字节 df['Interest']=df['Interest'].str.replace%',.astypefloat df 名称利息 0汤姆10.20 1.15.70 2朱利14.67 df.info 范围索引:3个条目,0到2 数据列共2列: 列非空计数数据类型 -- --- ------- --- 0名称3非空对象 1利息3非空浮动64 数据类型:float641,object1 内存使用:176.0+字节 split只是splitstr,当您需要删除str末尾的字符时,可以使用strip。试着做:

x = data['int.rate'].str.strip('%').astype(float)
代替:

x = data['int.rate'].str.split('%').astype(float)

非常感谢你。这给出了正确的结果。你能解释一下为什么strip工作而不是拆分吗?@KankshaDhakate:str.split product list,例如50%。拆分%导致['50',],而str.strip product str,例如50%。strip%导致'50'。当您请求python将某些内容转换为浮点值时,如果可能的话,python会将字符串或数字转换为浮点值。列表不是这两个,因此它不起作用。