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]
这没有多大意义。
我试图在 "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]
这没有多大意义。