Python警告:FutureWarning:支持多维索引

5
我在控制台里遇到了以下有关 Python 的警告。我没有找到解决方案。我们不想压制警告。同时,我们有一个庞大的代码库。如何知道哪些代码块导致了这个错误?因为警告没有给出代码行数。
我使用的是以下版本的 Python 和 Numpy。这是因为 Python 和 Numpy 版本过旧所导致的吗?
Python 版本- 3.6.8 Numpy 版本- 1.19.5 Matplotlib 版本是 3.3.4 Pandas 版本是 1.1.5
警告:
/python3.6/site-packages/matplotlib/cbook/__init__.py:1402: FutureWarning: Support for multi-dimensional indexing (e.g. obj[:, None]) is deprecated and will be removed in a future version. Convert to a numpy array before indexing instead. python3.6/site-packages/pandas/core/indexing.py:1743: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead

1
错误来自于matplotlib,你使用的是哪个版本的matplotlib? - Rob
@Rob。matplotlib版本为3.3.4,pandas版本为1.1.5。..还有一些与pandas相关的警告,我在原帖中已经提到了。 - Sarvendra Singh
最好能够获得完整的回溯信息。可能错误出现在堆栈的下方。 - Rob
3个回答

6
以下内容有效:
import numpy as np
np.array(obj)[:, None]

以防其他人遇到和我一样的问题,我写了一个评论。当使用 (obj)[:, np.newaxis] 时,会出现相同的警告,其中 obj 是 numpy.ndarray。我们可以进行相同的修改,如 np.array(obj)[:, np.newaxis] 来消除警告。 - Sam Wong

4

按照错误提示所建议的做法:“在索引之前将其转换为numpy数组。”也就是说,将.values调用附加到您正在绘制的pandas数据框列上。


0

这是你访问数组的方式,使用切片。Matplotlib将从它们处理数组的方式中删除它,但他们还没有这样做。在这种情况下,建议在发生这种情况之前转换为不同类型的数组访问,例如Numpy。根据你所展示的内容,我猜想只需要1.创建Numpy数组2.使用相同的切片,但使用Numpy语法。完成这些步骤后应该就可以了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接