df = pd.DataFrame({'x':['1.0692e+06']})
for i, item in enumerate(df['x']):
try:
int(item)
except ValueError:
print('ERROR at index {}: {!r}'.format(i, item))
df.apply(my_function) # throws various exceptions at unknown rows
# print Exceptions, index, and row content
for i, row in enumerate(df):
try:
my_function(row)
except Exception as e:
print('Error at index {}: {!r}'.format(i, row))
print(e)
您看到的错误可能是由于
x
列中的值是字符串:理想情况下,可以通过确保存储在 数据帧在构建时已经是int而不是strings。 如何做到这一点当然取决于如何构建数据框架。
事后,可以使用applymap修复数据帧:
但是对数据帧中的每个值调用
ast.literal_eval
可能会很慢,这就是为什么从一开始就解决问题是最好的选择。通常您可以drop to a debugger when an exception is raised检查
row
有问题的值。然而,在本例中,异常发生在对
astype
的调用中,该调用是C编译代码的一个薄包装。C编译的代码正在对df['x']
中的值进行循环,因此Python调试器在这里没有帮助——它不允许您反省从C编译的代码中引发异常的值。有很多重要的部分,在C、C++、Cython或FORTRAN中编写,Python调试器不带你进入快速处理循环的非Python代码。
因此,我将返回到一个低级的解决方案:遍历Python循环中的值并使用
try...except
来捕获第一个错误:收益率
要报告由于任何异常而无法映射的所有行,请执行以下操作:
相关问题 更多 >
编程相关推荐