Я новичок в python и pandas.
Я пытаюсь закодировать что-то, в чем я сравнил вторую последнюю строку кадра данных pandas, проиндексированного по дате / времени, с последней строкой кадра данных. Однако у меня возникают проблемы при попытке правильно сравнить индекс.
Например, для фрейма данных
dti = pd.date_range('2018-01-01', periods=10, freq='D')
df = pd.DataFrame(np.random.randn(10, 4), index=dti, columns=['value', 'value1', 'value2', 'value3'])
Создает фрейм данных
value value1 value2 value3
2018-01-01 0.249018 -0.630937 1.120733 0.343331
2018-01-02 -0.347979 0.218776 -0.327967 0.569075
2018-01-03 0.879929 0.316554 0.159652 -0.872002
2018-01-04 -1.492683 -0.560168 -0.871728 1.739402
2018-01-05 -3.187776 -1.399635 0.873503 -0.098537
2018-01-06 -0.482267 -0.174304 0.821850 1.530861
2018-01-07 0.385600 -0.395019 -0.507524 -0.033996
2018-01-08 1.358576 -2.107309 0.956507 -0.360288
2018-01-09 -0.283369 0.630684 1.148554 -1.907604
2018-01-10 0.896697 0.030671 0.131533 -1.325552
I ' я пытаюсь сравнить
if df.loc[last_row, ['value']] > df.loc[second_last_row, ['value']]:
# Compare to see if 'value' in 2018-01-10 is higher than 'value' in 2018-01-09
Я пытался использовать
length = len(df)
if if df.loc[length-1, ['value']] > df.loc[length-2, ['value']]:
, но я получаю сообщение об ошибке
TypeError: cannot do index indexing on <class 'pandas.tseries.index.DatetimeIndex'> with these indexers [5] of <class 'int'>
Кажется, что DatetimeIndex не может мне манипулировать тем же как обычные целочисленные индексы.
Я также рассмотрел использование
df['value'].tail(1)
, но я не уверен, как я смогу получить доступ ко второй последней строке с помощью метода .tail.
Мне нужен совет о том, как я мог бы получить данные из хвостовой части моего информационного кадра на основе его расстояния от конца информационного кадра. Спасибо!