最近我发现自己陷入了一个奇怪的境地,我自己也解决不了:
考虑此MWE:
import pandas
import numpy as np
data = pandas.DataFrame(np.random.rand(10, 5), columns=list("abcde"))
observations = data.loc[:, :"c"]
features = data.loc[:, "c":]
print(data)
print(observations)
print(features)
根据this Answer,切片本身是正确的,它的工作原理是打印正确的结果。但是当我尝试运行mypy时,我得到了这个错误:
mypy.exe .\t.py
t.py:1: error: Skipping analyzing "pandas": module is installed, but missing library stubs or py.typed marker
t.py:1: note: See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports
t.py:6: error: Slice index must be an integer or None
t.py:7: error: Slice index must be an integer or None
Found 3 errors in 1 file (checked 1 source file)
这也是正确的,因为切片不是用整数完成的。我如何满足或禁用Slice index must be an integer or None
错误?
当然,你可以使用iloc(:,:3)
来解决这个问题,但这感觉像是一个糟糕的做法,因为使用iloc
时,我们依赖于列的顺序(在这个例子中,loc
也依赖于顺序,但这样做只是为了保持MWE短)。
1条答案
按热度按时间9gm1akwq1#
这是一个开放的问题(#GH2410)。
作为一种解决方法,您可以尝试使用
get_loc
:输出: