pandas 的 df.take() 和 df.iloc[] 有什么区别?

Rag*_*lek 9 indexing pandas

对我来说,它似乎df.take()与更常见的df.iloc[]. 我检查了文档但找不到区别。是否存在take()优于 的情况iloc[]

Ale*_*lex 5

有一些非常重要的区别:

  1. .iloc 的类型为 <class 'pandas.core.indexing._iLocIndexer'>,而 .take 是一种方法
  2. 最重要的是 .iloc 可以同时对行和列进行索引。.take 只能选择其中之一。
  3. .take 始终返回两个轴中具有相同级别数的 DataFrame。相比之下,.iloc 可以轻松返回更少的级别,甚至完全返回 Series 而不是 DataFrame,即 df.iloc[3, :] 返回以列为索引的 Series,但 df.take([3 ]) 返回一个只有一行的 DataFrame。
  4. 同样非常重要的是,.take 总是返回一个副本。这意味着您也可以使用 .iloc 进行赋值,但 .take 则不然。