我有一个DataFrame,看起来像下面这样:
df = pd.DataFrame({'a':[True]*5+[False]*5+[True]*5,'b':[False]+[True]*3+[False]+[True]*5+[False]*4+[True]})
a b
0 True False
1 True True
2 True True
3 True True
4 True False
5 False True
6 False True
7 False True
8 False True
9 False True
10 True False
11 True False
12 True False
13 True False
14 True False
只有当列b
的同一行上的内部值是True
时,我才能选择列a
是True
的块?
我知道我可以找到将DataFrame分割成连续的True
区域,并对每个DataFrame块应用一个函数,但这是针对一个更大的问题,有1000多万行,我不认为这样的解决方案可以很好地扩展。
我的预期输出如下:
a b c
0 True False True
1 True True True
2 True True True
3 True True True
4 True False True
5 False True False
6 False True False
7 False True False
8 False True False
9 False True False
10 True False False
11 True False False
12 True False False
13 True False False
14 True True False
1条答案
按热度按时间20jt8wwn1#
你可以对a值进行groupby,然后查看函数中的b值,就像这样:
尝试它是否足够快的数据。如果没有,lambda将不得不被pandas函数取代,但这将是更多的代码。