我正在努力扩大我的熊猫技能.我有一个像这样的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] 举报,一经查实,本站将立刻删除。