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

时间:2015-03-03 17:02:01

标签: python pandas

我们假设我有一个像这样的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?

1 个答案:

答案 0 :(得分:14)

关于你的第一个问题:

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

小心第一行或最后一行的匹配:)