如何获得熊猫系列中每个增量的指数?

时间:2019-03-31 23:06:11

标签: pandas

当值增加一时,如何获取熊猫系列的索引?

例如输入为

  A
0 0
1 1
2 1
3 1
4 2
5 2
6 3
7 4
8 4

输出应为:[0, 1, 4, 6, 7]

3 个答案:

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