当前位置: 首页 > 面试题库 >

pandas在DataFrame中获取给定索引的位置

田志
2023-03-14
问题内容

假设我有一个像这样的DataFrame:

df
     A  B
5    0  1
18   2  3
125  4  5

5, 18, 125索引在哪里

我想在某个索引之前(或之后)得到该行。例如,我有索引18(例如,通过执行df[df.A==2].index),并且我想在之前获得该行,但我不知道该行具有5索引。

2个子问题:

  • 如何获得索引的位置18?像df.loc[18].get_position()这样的东西会回来,1所以我可以在到达之前df.iloc[df.loc[18].get_position()-1]
  • 有另一种解决办法,有点像选择-C-A或者-B使用grep?

问题答案:

对于第一个问题:

base = df.index.get_indexer_for((df[df.A == 2].index))

或者

base = df.index.get_loc(18)

要获得周围的环境:

mask = pd.Index(base).union(pd.Index(base - 1)).union(pd.Index(base + 1))

我使用索引和联合来删除重复项。您可能需要保留它们,在这种情况下可以使用np.concatenate

注意第一行或最后一行的匹配:)



 类似资料:
  • 问题内容: 我正在尝试重新索引熊猫对象,像这样, 我正在如下所示进行操作,并且得到了错误的答案。有关如何执行此操作的任何线索? 知道为什么会这样吗? 问题答案: 为什么不简单地使用方法?

  • 问题内容: 这似乎是一个简单的问题,但是我以前找不到它(这个和这个很接近,但是答案不是很好)。 问题是:如果我想在df中 某处 搜索值(我不知道它在哪一列中),然后返回所有具有匹配项的行。 什么是Pandaic最有效的方法?还有什么比: ? 问题答案: 您可以对整个DataFrame执行相等比较: 另一个选择是使用比较:

  • 问题内容: 我有以下DataFrame: 如您所见,列用作索引。我想获取该行的序数,在这种情况下应该是。 被测试的列可以是索引列(在这种情况下也可以)或常规列,例如,我可能想找到满足条件的行的索引。 问题答案: 您可以这样使用np.where: 返回的值是一个数组,因为一列中可能有多个具有特定索引或值的行。

  • 当我试图找到这个答案时,我可能使用了糟糕的搜索词。现在,在索引DataFrame之前,我以这种方式在列中获得一个值列表... …然后我将在列上设置索引。这似乎是浪费的一步。在索引上尝试上述操作时,我得到一个键错误。 如何获取索引中的值(单个和多个)并将其放入列表或元组列表中?

  • 问题内容: 我有以下pd.DataFrame: 它具有带有和层次结构级别的MultiIndex列。该标签从0到n,并为每个标签,有两个和列。 我想子选择此DataFrame的所有(或)列。 问题答案: 有一种方法可以与布尔索引一起使用,以获得预期的结果。