我试图在"无"之前找出这些行的索引。发生。
.=
我希望上面代码的输出应该是
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])
请纠正我
答案 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
这没有多大意义。