Pandas, эффективный способ получить строки ниже и выше нулевых значений

#python #pandas #dataframe

#python #pandas #фрейм данных

Вопрос:

У меня есть фрейм данных, который содержит несколько ячеек с нулем, я хочу обработать их таким образом, чтобы получить среднее значение столбца и последнюю строку над нулем и первую после.

Я знаю, как получить среднее значение, отбросив нули. мой вопрос в том, как я могу получить строки, о которых я упоминал?

пример фрейма данных

 2020-09-15    211.03
2020-09-16    213.60
2020-09-17    205.69
2020-09-18    208.65
2020-09-19    214.35 # get the value for this row
2020-09-20      0.00
2020-09-21      0.00 
2020-09-22    222.54 # and for this row
  

Комментарии:

1. df[column_name].value_counts() не даст вам ни одного экземпляра нуля, затем просто вычтите это в средней формуле

Ответ №1:

Попробуйте это:

 col = df['column_name']
cond = col.ne(0) amp; (
    col.shift().eq(0)      # row above is 0
    | col.shift(-1).eq(0)  # row below is 0
)
df.loc[cond]