Pandas 数据框中的分组布尔值
Group boolean values in Pandas Dataframe
我有一个 Dataframe,在一列中有一系列随机的 True、False:
import pandas as pd
df = pd.DataFrame(data={'A':[True, False, True, True, False, False, True, False, True, False, False]})
df
一个
0
正确
1
错
2
正确
3
正确
4
错
5
错
6
正确
7
错
8
正确
9
错
10
错
我想要这个:(不知道如何用简单的词来解释它)
一个
B
0
正确
1
1
错
2
2
正确
2
3
正确
2
4
错
3
5
错误
3
6
正确
3
7
错
4
8
正确
4
9
错
5
10
错误
5
我尝试了以下命令,但没有成功:
df[A].shift()
df[A].diff()
df[A].eq()
非常感谢您的帮助。
马蒂亚斯
IIUC,你可以试试:
df['B'] = (df.A.shift() & ~df.A).cumsum() + 1
# OR df['B'] = (df.A.shift() & ~df.A).cumsum().add(1)
输出:
A B
0 True 1
1 False 2
2 True 2
3 True 2
4 False 3
5 False 3
6 True 3
7 False 4
8 True 4
9 False 5
10 False 5
一点逻辑diff
(~df.A.astype(int).diff().ne(-1)).cumsum()+1
Out[234]:
0 1
1 2
2 2
3 2
4 3
5 3
6 3
7 4
8 4
9 5
10 5
Name: A, dtype: int32
我有一个 Dataframe,在一列中有一系列随机的 True、False:
import pandas as pd
df = pd.DataFrame(data={'A':[True, False, True, True, False, False, True, False, True, False, False]})
df
一个 | |
---|---|
0 | 正确 |
1 | 错 |
2 | 正确 |
3 | 正确 |
4 | 错 |
5 | 错 |
6 | 正确 |
7 | 错 |
8 | 正确 |
9 | 错 |
10 | 错 |
我想要这个:(不知道如何用简单的词来解释它)
一个 | B | |
---|---|---|
0 | 正确 | 1 |
1 | 错 | 2 |
2 | 正确 | 2 |
3 | 正确 | 2 |
4 | 错 | 3 |
5 | 错误 | 3 |
6 | 正确 | 3 |
7 | 错 | 4 |
8 | 正确 | 4 |
9 | 错 | 5 |
10 | 错误 | 5 |
我尝试了以下命令,但没有成功:
df[A].shift()
df[A].diff()
df[A].eq()
非常感谢您的帮助。 马蒂亚斯
IIUC,你可以试试:
df['B'] = (df.A.shift() & ~df.A).cumsum() + 1
# OR df['B'] = (df.A.shift() & ~df.A).cumsum().add(1)
输出:
A B
0 True 1
1 False 2
2 True 2
3 True 2
4 False 3
5 False 3
6 True 3
7 False 4
8 True 4
9 False 5
10 False 5
一点逻辑diff
(~df.A.astype(int).diff().ne(-1)).cumsum()+1
Out[234]:
0 1
1 2
2 2
3 2
4 3
5 3
6 3
7 4
8 4
9 5
10 5
Name: A, dtype: int32