在使用绘图代码挣扎之后,我最终得到了以下最小的工作示例:
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?
答案 0 :(得分:1)
在新版本中不再如此。
现在引起的错误是:ValueError: scatter requires x column to be numeric
,这是一个信息量更大的错误。
无论如何,我认为原始KeyError
的原因是在plot函数内部使用了内部函数_get_numeric_data
(在超类NDFrame
下)。这样会在尝试进行绘制之前删除了非数字列,由于非数字列'foo'被删除,因此引发了KeyError
。