Python 获取索引器错误:尝试使用Pandas.DataFrame.plot.hexbin时,索引超出范围

Python 获取索引器错误:尝试使用Pandas.DataFrame.plot.hexbin时,索引超出范围,python,pandas,matplotlib,Python,Pandas,Matplotlib,我正在使用Python的matplotlib库和Pandas对NBA投篮数据进行建模。 以下是导致错误的行: shot_df.plot.hexbin(shot_df.LOC_X, shot_df.LOC_Y) 其中,shot_df是包含所有快照的数据帧,LOC_X是所有X坐标,LOC_Y是所有相应的Y坐标LOC\u X可以位于[-252252]中,LOC\u Y可以位于[-47.5,~900]中,但是我仅在LOC\u Y小于424.5时绘制值 当 在给定相同输入时生成预期输出 我已经梳理了抛出

我正在使用Python的
matplotlib
库和
Pandas
对NBA投篮数据进行建模。 以下是导致错误的行:

shot_df.plot.hexbin(shot_df.LOC_X, shot_df.LOC_Y)
其中,
shot_df
是包含所有快照的数据帧,
LOC_X
是所有X坐标,
LOC_Y
是所有相应的Y坐标
LOC\u X
可以位于
[-252252]
中,
LOC\u Y
可以位于
[-47.5,~900]
中,但是我仅在
LOC\u Y
小于
424.5时绘制值

在给定相同输入时生成预期输出

我已经梳理了抛出错误的数据,但仍然不知道为什么会出现这个错误。如有任何建议,将不胜感激

Traceback (most recent call last):
  File "shotChart.py", line 153, in <module>
    plt.sca(shot_df.plot.hexbin(shot_df.LOC_X, shot_df.LOC_Y))
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/tools/plotting.py", line 3880, in hexbin
    return self(kind='hexbin', x=x, y=y, C=C, **kwds)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/tools/plotting.py", line 3671, in __call__
    sort_columns=sort_columns, **kwds)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/tools/plotting.py", line 2556, in plot_frame
    **kwds)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/tools/plotting.py", line 2384, in _plot
    plot_obj.generate()
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/tools/plotting.py", line 987, in generate
    self._make_plot()
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/tools/plotting.py", line 1602, in _make_plot
    ax.hexbin(data[x].values, data[y].values, C=c_values, cmap=cmap,
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/core/frame.py", line 1963, in __getitem__
    return self._getitem_array(key)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/core/frame.py", line 2008, in _getitem_array
    return self.take(indexer, axis=1, convert=True)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/core/generic.py", line 1371, in take
    convert=True, verify=True)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/core/internals.py", line 3619, in take
    indexer = maybe_convert_indices(indexer, n)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/core/indexing.py", line 1750, in maybe_convert_indices
    raise IndexError("indices are out-of-bounds")
IndexError: indices are out-of-bounds
回溯(最近一次呼叫最后一次):
文件“shotChart.py”,第153行,在
plt.sca(放炮测向图hexbin(放炮测向位置X,放炮测向位置Y))
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/pandas/tools/plotting.py”,第3880行,在hexbin中
返回自我(种类='hexbin',x=x,y=y,C=C,**kwds)
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/pandas/tools/plotting.py”,第3671行,在调用中__
排序列=排序列,**kwds)
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/pandas/tools/plotting.py”,第2556行,在plot_框架中
**kwds)
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/pandas/tools/plotting.py”,第2384行,在_plot中
绘图对象生成()
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/pandas/tools/plotting.py”,第987行,在generate中
self._make_plot()
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/pandas/tools/plotting.py”,第1602行,在“make\u plot”中
ax.hexbin(数据[x]。值,数据[y]。值,C=C_值,cmap=cmap,
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/pandas/core/frame.py”,第1963行,位于__
返回self.\u getitem\u数组(键)
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/pandas/core/frame.py”,第2008行,在_getitem_数组中
返回self.take(索引器,轴=1,转换=True)
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/pandas/core/generic.py”,第1371行,在take中
convert=True,verify=True)
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/pandas/core/internals.py”,第3619行,在take中
索引器=可能转换索引(索引器,n)
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/pandas/core/index.py”,第1750行,在可能的转换索引中
提升索引器(“索引超出范围”)
索引器:索引超出范围

好的,我找到了解决方法。它使用我的x值
shot_df.LOC_x
作为索引,这会弄乱整个图形的总索引范围(只允许索引值介于0和11之间)。因为
Pandas.DataFrame.plot.hexbin
只是
Matplotlib.pyplot.hexbin
的包装器,所以实现相同结果而不需要索引头痛的一个更简单的方法是
plt.hexbin(shot_df.LOC X,shot_df.LOC_Y)
并且可以使用所有相同的关键字。

根据,hexbin方法接受列索引(int)或列名(str)。尝试使用列名:

shot_df.plot.hexbin(x='LOC_X', y='LOC_Y')

你没有说错误是什么。根据ako的评论:在你的问题中包括完整的回溯。此外,最好知道各种变量是什么样子的。制作一个完整的示例,可以用相同的错误重现。
shot_df.plot.hexbin(x='LOC_X', y='LOC_Y')