微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 获取pandas dataframe列中值更改的索引

我正在努力扩大我的熊猫技能.我有一个像这样的pandas数据框:

df

      Group 1     Group 2            Product ID
0   Products      International      X11
1   Products      International      X11
2   Products      Domestic           X11
3   Products      Domestic           X23
4   Services      Professional       X23
5   Services      Professional       X23
6   Services      Analytics          X25

我正在尝试使用一些pandas功能获取组1和组2的值发生变化的索引.我知道我可能不得不逐列,并将这些索引附加到不同的列表中.

我引用了这个问题Find index where elements change value pandas dataframe,这是我能找到的最接近的类似问题.

我想获得这样的输出

 Group 1 changes = [0,4]
 Group 2 changes = [0,2,4,6]

是否有任何类型的内置功能,如果列中的两个值相同,那么pandas可以快速引用,然后获取该索引?

我的所有数据都按组排序,因此如果解决方案确实涉及逐行迭代,则不应遇到任何问题.

任何帮助深表感谢!

解决方法:

使用

In [91]: df.ne(df.shift()).apply(lambda x: x.index[x].tolist())
Out[91]:
Group 1             [0, 4]
Group 2       [0, 2, 4, 6]
Product ID       [0, 3, 6]
dtype: object

In [92]: df.ne(df.shift()).filter(like='Group').apply(lambda x: x.index[x].tolist())
Out[92]:
Group 1          [0, 4]
Group 2    [0, 2, 4, 6]
dtype: object

也适用于dict,

In [107]: {k: s.index[s].tolist() for k, s in df.ne(df.shift()).filter(like='Group').items()}
Out[107]: {'Group 1': [0L, 4L], 'Group 2': [0L, 2L, 4L, 6L]}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐