Python dataframe - считать вхождения в указанном диапазоне (не по оси!) - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть фрейм данных (называемый df), где есть временной ряд с меткой времени (первый столбец) и несколькими столбцами целочисленных данных.

TimeStamp Страна 1 Страна 2

12 : 00: 00 10.05 21.60

11: 59: 00 11.12 22.33

11: 58: 00 12.18 21.70

11: 57: 00 11.70 21.60

11: 56: 00 11.65 22.33

11: 55: 00 11.70 21.60

11: 54: 00 11.50 22.33

11: 53: 00 11.80 21.80

... ... ...

Проблема: Я хочу посчитать количество вхождений максимум в указанном c диапазоне (не по всей оси!).

Например, в столбце Страна 2 я бы хотел посчитать количество вхождений максимального значения в ряды 1-8. Итак, сначала я нахожу максимальное значение: df.iloc [0: 7,1] .max () -> 22,33

и теперь я бы хотел посчитать их, как это сделать?

Я ищу что-то вроде count (range, target value)

-> df.count (df.iloc [0: 7,1)], df.iloc [0: 7,1] .max ())

Выходные данные должны быть целыми числами. Здесь максимальное значение (равное 22,33) встречается 3 раза в указанном диапазоне, поэтому я ожидаю 3.

Спасибо за вашу помощь

1 Ответ

0 голосов
/ 18 апреля 2020

Сравните каждое значение отфильтрованной серии по максимуму и подсчитайте True s значения по sum:

s = df.iloc[0:7,1]

count = s.eq(s.max()).sum()
#alternative
count = (s == s.max()).sum()

print (count)
3

РЕДАКТИРОВАТЬ: Используйте Series.between:

s = df.iloc[0:7,1]

thr = 0.01
#print (s.max() - thr)
#print (s.max() + thr)

count = s.between(s.max() - thr, s.max() + thr).sum()
print (count)
3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...