当值增加一时,如何获取熊猫系列的索引?
例如输入为
A
0 0
1 1
2 1
3 1
4 2
5 2
6 3
7 4
8 4
输出应为:[0, 1, 4, 6, 7]
答案 0 :(得分:2)
是drop_duplicates
df.drop_duplicates('A').index.tolist()
[0, 1, 4, 6, 7]
答案 1 :(得分:2)
您可以使用Series.duplicated
并访问索引,速度应该会稍快一些。
df.index[~df.A.duplicated()]
# Int64Index([0, 1, 4, 6, 7], dtype='int64')
如果您确实想要列表,可以执行此操作,
df.index[~df.A.duplicated()].tolist()
# [0, 1, 4, 6, 7]
请注意,duplicated
(和drop_duplicates
)仅在系列没有任何减量的情况下起作用。
或者,您可以在此处使用diff
,并索引到df.index
,类似于先前的解决方案:
np.insert(df.index[df.A.diff().gt(0)], 0, 0)
# Int64Index([0, 1, 4, 6, 7], dtype='int64')
答案 2 :(得分:0)
这可确保第二行增加一(而不是两或其他任何东西!)
df[ ((df.A.shift(-1) - df.A) == 1.0)].index.values
输出为numpy数组:
array([2, 5])
示例:
# * * here value increase by 1
# 0 1 2 3 4 5 6 7
df = pd.DataFrame({ 'A' : [1, 1, 1, 2, 8, 3, 4, 4]})
df[ ((df.A.shift(-1) - df.A) == 1.0)].index.values
array([2, 5])