python 中特定行的索引值

Index values of specific rows in python

我试图在 "None" 发生之前找出此类行的索引。

pId=["a","b","c","None","d","e","None"]
df = pd.DataFrame(pId,columns=['pId'])

              pId
0               a
1               b
2               c
3            None
4               d
5               e
6            None

df.index[df.pId.eq('None') & df.pId.ne(df.pId.shift(-1))]

我期望上面代码的输出应该是

Index([2,5])

它给了我

Index([3,6])

请指正

我不确定你展示的具体例子。不管怎样,你可以用更简单的方式来做:

indexes = [i-1 for i,x in enumerate(pId) if x == 'None']

问题是您要返回 "None" 的索引。您 将它与上一项进行比较 ,但您仍在报告 "None" 的索引。请注意,您接受的答案不会进行此项检查。

总之,您仍然需要在检查结果上涂上“-1”。

-1 来自 df[df["pId"] == "None"].index:

import pandas as pd

pId=["a","b","c","None","d","e","None"]
df = pd.DataFrame(pId,columns=['pId'])

print(df[df["pId"] == "None"].index - 1)

这给你:

Int64Index([2, 5], dtype='int64')

或者如果您只想要一个值列表:

(df[df["pId"] == "None"].index - 1).tolist()

您应该知道,对于像这样的列表:

pId=["None","None","b","c","None","d","e","None"]

你得到一个像这样的 df:

    pId
0  None
1  None
2     b
3     c
4  None
5     d
6     e
7  None

输出如下:

[-1, 0, 3, 6]

这没有多大意义。