Python 从dataframe列的所有行中删除%symbol,并将整个列值转换为浮点值
名为“int.rate”的数据帧列的值如下:11.26%、13.67%、,。。。。。其中,我需要从“int.rate”列的所有行中删除“%”符号,并将整列值转换为浮点值。我已经尝试过上面提到的所有其他代码,但即使它们也会抛出错误,因此我需要知道此任务的确切代码。请帮忙!下面是我尝试的代码: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) 给 --------------------------------------------------
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会将字符串或数字转换为浮点值。列表不是这两个,因此它不起作用。