为什么熊猫与错误排序的多索引联接会导致堆栈溢出?

时间:2019-05-28 14:35:50

标签: python pandas dataframe recursion join

当使用“未按顺序”使用MultiIndex连接两个熊猫数据帧时,我的熊猫安装使python崩溃,错误代码为0xC00000FD。我花了一段时间才找到我的错误,当我发现它时,我变得更加困惑。为什么会发生这种情况,我该如何更好地发现它?

考虑以下代码:

value

它提供以下输出:

import pandas as pd

df = pd.DataFrame.from_records([
    ("foo", 1, .1),
    ("foo", 2, .2),
    ("bar", 1, .3),
    ("bar", 2, .4)
], columns=["Level1", "Level2", "Value"])


df2 = df.set_index(["Level1","Level2"])
df3 = df.set_index(["Level2","Level1"])

combination = pd.merge(left=df2, right=df2, left_index=True, right_index=True)
print("ok")
combination2 = pd.merge(left=df2, right=df3, left_index=True, right_index=True)
print("fail")

当我有一张桌子,做了一些旋转/融化,并想回到原始的多索引并加入我的结果时,问题就出现了。起初我不理解该错误信息。从this page中,我了解到错误代码是堆栈溢出。从this PR to pandas中,我了解到递归在某种程度上与计算组索引有关。这些信息使我能够找出自己的错误并创建一个最小的复制示例。

现在我的问题:

  • 为什么会这样?熊猫不应该再提供更多信息错误吗?我的直觉说,应该很容易发现。
  • 有什么方法可以以编程方式识别这些错误,而不是通过堆栈溢出,无意义的错误和调试器损坏找到自己吗?

编辑迄今为止,最新的python和熊猫,pandas 0.24.2和python 3.7.3发生了上述错误

0 个答案:

没有答案