在 Pandas 数据框中查找列值发生变化时的索引值。

3

我有一个如下的数据框:

df1 =

     col_1   val_1
0    4.0     0.89
1    4.0     0.56
2    49.0    0.7
3    49.0    1.23
4    52.0    0.8
5    52.0    0.12
6    32.0    0.5

我想找到当col_1的值发生变化时的索引值,并将其放入一个列表中。
我尝试了以下代码:
n_change = (np.where(~df1.col_1.diff(+1).isin([0, np.nan])))

但是它返回一个数组的元组,很难通过它进行迭代。

我想要以下解决方案

n_change = [2,4,6]

or 

n_change = array(2,4,6)

有更好的方法吗?

1个回答

3
您可以使用:
df.index[df['col_1'].ne(df['col_1'].shift().bfill())]
# or with diff
# df.index[df['col_1'].diff().fillna(0).ne(0)]

输出结果:Int64Index([2, 4, 6], dtype='int64')

作为列表:

df.index[df['col_1'].ne(df['col_1'].shift().bfill())].tolist()

输出结果:[2, 4, 6]

使用您的解决方案:

np.where(~df.col_1.diff().isin([0, np.nan]))[0].tolist()

输出:[2,4,6]


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接