数据编码为字符串时的KeyError

时间:2016-09-07 15:39:31

标签: python pandas matplotlib types

在使用绘图代码挣扎之后,我最终得到了以下最小的工作示例:

import pandas
import matplotlib.pyplot as plt

data = {
    'foo': ['2', '335', '3'],
    'bar': [1, 2, 1],
}

pandas.DataFrame(data).plot.scatter('foo', 'bar')  # KeyError
plt.show()

提出KeyError: 'foo'

但是,如果我在foo数据中使用整数而不是字符串:

'foo': [2, 335, 3],

我得到了预期的散点图,没有错误。

此DataFrame行为的基本原理是什么? 我可以理解所有数据必须采用相同的格式。但是为什么在这种情况下提出一个(非常简洁的)KeyError?

1 个答案:

答案 0 :(得分:1)

在新版本中不再如此。

现在引起的错误是:ValueError: scatter requires x column to be numeric,这是一个信息量更大的错误。

无论如何,我认为原始KeyError的原因是在plot函数内部使用了内部函数_get_numeric_data(在超类NDFrame下)。这样会在尝试进行绘制之前删除了非数字列,由于非数字列'foo'被删除,因此引发了KeyError