因为如果我们想处理这样的案件,我们也必须考虑到这些价值
df.iloc[[1,5]]
,你需要从“30F”中得到5,我认为最简单的方法是利用合并:
In [172]: df.reset_index().reset_index().merge(df.iloc[1:3].reset_index())
Out[172]:
level_0 index letters
0 1 20 B
1 2 30 C
In [173]: df.reset_index().reset_index().merge(df.iloc[1:3].reset_index())["level_0"].values
Out[173]: array([1, 2], dtype=int64)
In [174]: df.reset_index().reset_index().merge(df.iloc[[1,5]].reset_index())
Out[174]:
level_0 index letters
0 1 20 B
1 5 30 F
In [175]: df.reset_index().reset_index().merge(df.iloc[[1,5]].reset_index())["level_0"].values
Out[175]: array([1, 5], dtype=int64)
如果由于重复的行而无法唯一地恢复原始位置,您将获得所有这些位置:
In [179]: df.iloc[-1, 0] = "C"
In [180]: df.reset_index().reset_index().merge(df.iloc[[1,2]].reset_index())
Out[180]:
level_0 index letters
0 1 20 B
1 2 30 C
2 5 30 C
In [181]: df.reset_index().reset_index().merge(df.iloc[[1,2]].reset_index())["level_0"].values
Out[181]: array([1, 2, 5], dtype=int64)
但您可以决定合并后如何删除重复项。