python中特定行的索引值

时间:2016-09-22 22:10:35

标签: python pandas indexing shift

我试图在"无"之前找出这些行的索引。发生。

.=

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

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])

请纠正我

3 个答案:

答案 0 :(得分:1)

我不确定您展示的具体示例。无论如何,你可以用一种更简单的方式来做到这一点:

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

答案 1 :(得分:0)

问题是你要返回“无”的索引。您与前一项进行比较,但您仍然在报告“无”的索引。请注意,您接受的答案不会进行此项检查。

简而言之,您仍然需要在检查结果上涂抹“-1”。

答案 2 :(得分:0)

来自-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()

你得到的df如下:

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

输出如:

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

这没有多大意义。