编程语言
首页 > 编程语言> > python-熊猫系列中对错的条纹

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与shifted 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