У меня есть кадр данных, который выглядит следующим образом:
In [9]: d = pd.DataFrame({'place': ['home', 'home', 'home', 'home', 'office', 'office', 'office', 'home', 'office', 'home', 'office', 'home', 'office', 'home'], 'person': ['a', 'a', 'a', 'a', 'a', 'a', 'a', 'b', 'b', 'c', 'c', 'c', 'c', 'c'], 'other_stuff': ['f', 'g', 'd', 'q', 'w', 'r', 's', 't', 'u', 'v', 'w', 'l', 'm', 'n']})
In [7]: d
place other_stuff person
0 home f a
1 home g a
2 home d a
3 home q a
4 office w a
5 office r a
6 office s a
7 home t b
8 office u b
9 home v c
10 office w c
11 home l c
12 office m c
13 home n c
В моих данных есть только две категории place
: home
и office
.Я хочу выбрать строки этого кадра данных, которые соответствуют всем person
, которые имеют «постоянные переходы» в столбце place
.то есть, я хочу выбрать только persons
, у которых есть изменения в place
, и они не меняются обратно.
В этом примере кадра данных я хочу выбрать все строки, соответствующие person
a и person
b, но не person c.Желаемый результат:
place other_stuff person
0 home f a
1 home g a
2 home d a
3 home q a
4 office w a
5 office r a
6 office s a
7 home t b
8 office u b
Я планирую groupby
в столбце person
, а затем написать функцию для apply
для каждой группы наблюдений.Мой фрейм данных содержит около 60 миллионов строк и 700 000 уникальных persons
, поэтому я не хочу использовать какую-либо итерацию.Я не уверен, как написать функцию, которая будет выбирать правильные строки, не просматривая каждую группу person
наблюдений.