Подсчет строк между набором индексов в Dataframes - PullRequest
0 голосов
/ 03 апреля 2020

У меня проблема с подсчетом количества строк между двумя индексами из другого Dataframe. Позвольте мне объяснить это на примере:

Индекс DF2 является опорным вектором, и я хочу подсчитать количество строк / записей в DF1, которые находятся между индексами пары.

DF1                     DF2
          data                  data    
index                   index                  
   3      1               2       1    
   9      1              11       1    
  15      0              33       1      
  21      0              34       1
  23      0
  30      1
  34      0

Теперь я хочу подсчитать все строки, которые l ie между парой индексов в DF 2. Опорный вектор - это индексный вектор DF2: [2, 11, 33, 34]

Between index  2 and 11 of DF2 is index: 3 and 9 of DF1        -> result 2

Between index 11 and 33 of DF2 is index: 15, 21, 23, 30 of DF1 -> result 4

Between index 33 and 34 of DF2 is index: 34 of DF1             -> result 1

Поэтому вектор результата должен быть: [2, 4, 1]

Это действительно трудно, поэтому я надеюсь, что вы мне поможете.

1 Ответ

1 голос
/ 03 апреля 2020

Если бы сначала построить фрейм данных с минимальными и максимальными индексами из df2:

limits = pd.DataFrame({'mn': np.roll(df2.index, 1), 'mx': df2.index}).iloc[1:]

Это дает:

   mn  mx
1   2  11
2  11  33
3  33  34

Затем легко использовать понимание для получить ожидаемый список:

result = [len(df1[(i[0]<=df1.index)&(df1.index<=i[1])]) for i in limits.values]

и получить, как ожидалось:

[2, 4, 1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...