使用 bool 系列为 Pandas Dataframe 建立索引时,我有点困惑。
我应该使用 iloc 还是 loc?或任何更好的解决方案?
例如

t1 = pd.DataFrame(np.ones([3,4]))
t1.iloc[1:3,0]=3

此行将给出正确答案
t1.loc[:,(t1>2).any()]

但与 iloc 一致将引发错误
t1.iloc[:,(t1>2).any()]

我检查 https://pandas.pydata.org/pandas-docs/stable/indexing.html ,页面说 iloc 和 loc 都接受一个 bool 数组。为什么 iloc 在我的示例中不起作用?什么时候使用 iloc 和 loc?或者有没有更好的选择?

最佳答案

细微之处在于 iloc 需要一个 bool 值 数组 ,而 loc 可以使用 bool 序列或 bool 数组。该文档在说明 bool 数组在任何一种情况下都可以工作时在技术上是正确的。

因此,对于 iloc ,通过 pd.Series.values 提取 NumPy bool 数组将起作用:

t1.iloc[:, (t1>2).any().values]

关于python - 何时将 iloc 和 loc 用于 bool 值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51585502/

10-12 20:11