sha*_*uga 5 python python-3.x pandas
在pandas v0.17.1(anaconda python v3.4.3)中,替换功能打开datetime 了.
我试图DataFrame用新值替换我的字符串值.它DataFrame包含多个列(包括数据时间列).
该替代函数失败
>>> from datetime import datetime
>>> import pandas as pd
>>> df = pd.DataFrame({'no':range(4), 'nm':list('abcd'), 'tm':datetime.now()})
>>> df.replace('a', 'A')
Run Code Online (Sandbox Code Playgroud)
回溯(最近一次调用最后一次):文件"/home/xxx/anaconda/envs/py3/lib/python3.4/site-packages/pandas/core/internals.py",第2061行,在_try_coerce_args中其他= other.astype ('i8',copy = False).view('i8')ValueError:基数为10的int()的无效文字:'a'
在处理上述异常期间,发生了另一个异常:
回溯(最近一次调用最后一次):文件"/home/xxx/anaconda/envs/py3/lib/python3.4/site-packages/pandas/core/internals.py",第594行,替换值,_,to_replace ,_ = self._try_coerce_args(self.values,to_replace)文件"/home/xxx/anaconda/envs/py3/lib/python3.4/site-packages/pandas/core/internals.py",第2066行,在_try_coerce_args中引发TypeError TypeError
在处理上述异常期间,发生了另一个异常:
回溯(最近一次调用最后一次):文件"",第1行,在文件"/home/xxx/anaconda/envs/py3/lib/python3.4/site-packages/pandas/core/generic.py",第3110行,替换inplace = inplace,regex = regex)文件"/home/xxx/anaconda/envs/py3/lib/python3.4/site-packages/pandas/core/internals.py",第2870行,取代返回自我.apply('replace',**kwargs)文件"/home/xxx/anaconda/envs/py3/lib/python3.4/site-packages/pandas/core/internals.py",第2823行,申请中申请= getattr(b,f)(**kwargs)文件"/home/xxx/anaconda/envs/py3/lib/python3.4/site-packages/pandas/core/internals.py",第607行,如果没有替换mask.any():UnboundLocalError:赋值前引用的局部变量'mask'
这个相同的代码在pandas版本0.16.2上正常工作.
这是一个确认的错误吗?
正如评论所述,此问题已在 master 中修复,并将包含在 0.18 中(即将于 2016 年 1 月推出): https: //github.com/pydata/pandas/issues/11868,并且仅存在于 0.17.1 中。
作为一种解决方法(假设您没有重复命名的列),系列替换在 0.17.1 中仍然可以正常工作:
for c in df.select_dtypes(include=["object"]).columns:
df[c] = df[c].replace('a', 'A')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1102 次 |
| 最近记录: |