Как уменьшить поэлементную операцию (например, eq или gt) до числа? - PullRequest
0 голосов
/ 04 августа 2020

Надеюсь, я правильно задаю вопрос и не гонюсь за дикими утками здесь.

Предположим, у меня есть этот фрейм данных:

import pandas as pd
import numpy as np

df = pd.DataFrame(
  {'measurement1': np.random.rand(31), 'measurement2': np.random.rand(31)}, 
  index=pd.date_range(start='2020-01-01', end='2020-01-31')
)

Есть ли способ подсчитать все значения больше 0,15, например, из результата gt (), или я неправильно смотрю на это?

Ура!

1 Ответ

2 голосов
/ 04 августа 2020

Конечно. Добавьте sum go по столбцам, суммируйте (ось = 1) по строкам, суммируйте дважды, чтобы получить итог для всего фрейма данных / или используйте np.sum.

import pandas as pd
import numpy as np

np.random.seed(1)
df = pd.DataFrame(
  {'measurement1': np.random.rand(31), 'measurement2': np.random.rand(31)}, 
  index=pd.date_range(start='2020-01-01', end='2020-01-31')
)

df.gt(.15).sum()

Вывод:

measurement1    23
measurement2    24
dtype: int64

По строкам:

df.gt(.15).sum(axis=1)

Вывод:

2020-01-01    2
2020-01-02    2
2020-01-03    1
2020-01-04    2
2020-01-05    1
2020-01-06    1
2020-01-07    2
2020-01-08    1
2020-01-09    2
2020-01-10    2
2020-01-11    2
2020-01-12    2
2020-01-13    2
2020-01-14    1
2020-01-15    1
2020-01-16    2
2020-01-17    2
2020-01-18    2
2020-01-19    0
2020-01-20    1
2020-01-21    2
2020-01-22    2
2020-01-23    2
2020-01-24    2
2020-01-25    1
2020-01-26    2
2020-01-27    0
2020-01-28    1
2020-01-29    2
2020-01-30    1
2020-01-31    1
Freq: D, dtype: int64

Весь фрейм данных:

df.gt(.15).sum().sum()

или

np.sum(df.gt(.15).to_numpy())

Выход:

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