python-熊猫系列中对错的条纹
作者:互联网
我正在尝试找出如何在熊猫系列中显示对或错的条纹.
数据:
p = pd.Series([True,False,True,True,True,True,False,False,True])
0 True
1 False
2 True
3 True
4 True
5 True
6 False
7 False
8 True
dtype: bool
我尝试了p.diff(),但不确定如何计算生成的False值以显示所需的输出,如下所示:
0 0
1 0
2 0
3 1
4 2
5 3
6 0
7 1
8 0
解决方法:
如果p与shift
ed p和cumsum
不相等,则可以使用由compare创建的cumcount
个连续组.
print (p.ne(p.shift()))
0 True
1 True
2 True
3 False
4 False
5 False
6 True
7 False
8 True
dtype: bool
print (p.ne(p.shift()).cumsum())
0 1
1 2
2 3
3 3
4 3
5 3
6 4
7 4
8 5
dtype: int32
print (p.groupby(p.ne(p.shift()).cumsum()).cumcount())
0 0
1 0
2 0
3 1
4 2
5 3
6 0
7 1
8 0
dtype: int64
谢谢MaxU的另一个解决方案:
print (p.groupby(p.diff().cumsum()).cumcount())
0 0
1 0
2 0
3 1
4 2
5 3
6 0
7 1
8 0
dtype: int64
标签:series,cumsum,pandas,boolean,python 来源: https://codeday.me/bug/20191111/2022339.html