为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 try-except 语句中使用 MergeError?

如何在 try-except 语句中使用 MergeError?

摇曳的蔷薇 2021-09-28 16:09:26
我正在制作一个合并表 1-1 的程序,如果 validate='one-to-one' 不起作用,我想通过 try-except 语句使用 concat。但是,我未能在“除了 MergeError 作为 e:”代码中使用 MergeError。由于我写的实际代码太长,我就我的问题做了一个简单的例子。在下面的代码中,如果我使用result = pd.merge(left, right, on='B', how='outer', validate="one_to_one"),它返回给我 MergeError。但是,对于 try-except 代码,它不处理 MergeError 情况。它返回另一个错误,名为 NameError。有什么方法可以处理 MergeError 吗?import pandas as pdleft = pd.DataFrame({'A' : [1,2], 'B' : [1, 2]})right = pd.DataFrame({'A' : [4,5,6], 'B': [2, 2, 2]})try:    result = pd.merge(left, right, on='B', how='outer', validate="one_to_one")except MergeError as e:    print("ok ",e)MergeError                                Traceback (most recent call last)<ipython-input-1-2a4c90911337> in <module>()      6 try:----> 7     result = pd.merge(left, right, on='B', how='outer', validate="one_to_one")      8 except MergeError as e:~\Anaconda3\lib\site-packages\pandas\core\reshape\merge.py in merge(left, right, how, on, left_on, right_on, left_index, right_index, sort, suffixes, copy, indicator, validate)     59                          copy=copy, indicator=indicator,---> 60                          validate=validate)     61     return op.get_result()~\Anaconda3\lib\site-packages\pandas\core\reshape\merge.py in __init__(self, left, right, how, on, left_on, right_on, axis, left_index, right_index, sort, suffixes, copy, indicator, validate)    559         if validate is not None:--> 560             self._validate(validate)    561 ~\Anaconda3\lib\site-packages\pandas\core\reshape\merge.py in _validate(self, validate)   1079             elif not right_unique:-> 1080                 raise MergeError("Merge keys are not unique in right dataset;"   1081                                  " not a one-to-one merge")MergeError: Merge keys are not unique in right dataset; not a one-to-one merge
查看完整描述

2 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

用这个:

except pd.errors.MergeError as e:

或者,在顶部导入名称:

from pd.errors import MergeError


查看完整回答
反对 回复 2021-09-28
?
繁星coding

TA贡献1797条经验 获得超4个赞

您需要MergeError从其包含的模块导入,然后才能按名称捕获它。

from pandas.errors import MergeError


查看完整回答
反对 回复 2021-09-28
  • 2 回答
  • 0 关注
  • 205 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信