我们假设我有一个像这样的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?答案 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
小心第一行或最后一行的匹配:)