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

jrj*_*rjc 10 python pandas

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

df
     A  B
5    0  1
18   2  3
125  4  5
Run Code Online (Sandbox Code Playgroud)

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还是-Bgrep?

Tom*_*ger 17

对于你的第一个问题:

base = df.index.get_indexer_for((df[df.A == 2].index))
Run Code Online (Sandbox Code Playgroud)

或者

base = df.index.get_loc(18)
Run Code Online (Sandbox Code Playgroud)

为了得到周围的:

mask = pd.Index(base).union(pd.Index(base - 1)).union(pd.Index(base + 1))
Run Code Online (Sandbox Code Playgroud)

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

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