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

我正在制作一个合并表 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 pd


left = 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



摇曳的蔷薇
浏览 245回答 2
2回答

翻过高山走不出你

用这个:except&nbsp;pd.errors.MergeError&nbsp;as&nbsp;e:或者,在顶部导入名称:from&nbsp;pd.errors&nbsp;import&nbsp;MergeError

繁星coding

您需要MergeError从其包含的模块导入,然后才能按名称捕获它。from&nbsp;pandas.errors&nbsp;import&nbsp;MergeError
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python