Я хотел бы подсчитать количество раз, когда строка моего Df находится ниже порога.
Я пробовал этот код:
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from numpy.ma.extras import _ezclump as ez
years = np.arange(2000, 2010)
engine = ['A', 'B']
df = pd.DataFrame({
'Engine': np.repeat(['A', 'B'], 10),
'Year': np.tile(np.arange(2000, 2010), 2),
'Energy' : np.repeat([50,50,100,100,100,100,100,100,50,50,50,50,100,100,100,100,100,100,50,50], 1),
})
df = df.sort_values(['Engine','Year']).set_index('Year')
Max = {'A':100,
'B':100}
df['Max']=df.Engine.map(Max)
df['ratio'] = df['Energy'] / df['Max']
df['interval'] = df['ratio'].apply(lambda x: 2 if x >= 0.80 else (1 if x < 0.80 and x >= 0.20 else 0 ))
engine_off = ez((df['interval'] == 1).to_numpy())
В моем Df есть 4
Но настоящая проблема в том, что в моем engine_off во 2-й срез включаются Engine A и B. Таким образом, его счетчик только 3 капли, а не 4.
Кто-нибудь, как я могу сделать, чтобы исправить это?
Большое спасибо