Python Pandas последний элемент проверки столбца в условии IF Сбой почему - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть этот вычисленный кадр данных Pandas в виде df, который имеет плавающее значение, строковый индекс и значения nan. Моя логика очень проста, что в конкретном столбце при попытке проверить значение последнего элемента (==> = <= один из приведенных ниже примеров) </p>

Здесь в условии IF выдается ошибка и выполнение прекращается. Почему это происходит. Как решить эту проблему? Нэн вызывает проблему?

Time close ST_100_0.885    ST_Test
----    0.134   1.1111     nan
----    1.258   2.2222      dn
----    3.255   3.1212      up
----    4.256   4.3232      up
----    4.356   5.4343      dn

import requests
import time
import pandas as pd
import json
from pandas.io.json import json_normalize


df=df.fillna(0)
if (df['ST_100_0.885'][-1] <= df['close'][-1]):
   print("test passed")

некоторые из проверок, которые я сделал, которые показывают, что df имеет значение типа float объекта, как и ожидалось

Ошибки, которые я получаю при отладке

if (df['ST_100_0.885'][-1] <= df['close'][-1]):
in __getitem__
    result = self.index.get_value(self, key)
in get_value
    tz=getattr(series.dtype, 'tz', None))

File "pandas\_libs\index.pyx", line 98, in pandas._libs.index.IndexEngine.get_value (pandas\_libs\index.c:4363)
  File "pandas\_libs\index.pyx", line 106, in pandas._libs.index.IndexEngine.get_value (pandas\_libs\index.c:4046)
  File "pandas\_libs\index.pyx", line 154, in pandas._libs.index.IndexEngine.get_loc (pandas\_libs\index.c:5085)
  File "pandas\_libs\hashtable_class_helper.pxi", line 756, in pandas._libs.hashtable.Int64HashTable.get_item (pandas\_libs\hashtable.c:13913)
  File "pandas\_libs\hashtable_class_helper.pxi", line 762, in pandas._libs.hashtable.Int64HashTable.get_item (pandas\_libs\hashtable.c:13857)
KeyError: -1

close                           float64
high                            float64
low                             float64
open                            float64
time          datetime64[ns, US/Alaska]
volumefrom                      float64
volumeto                        float64
dtype: objec

T

Обратите внимание, что [-1] используется для доступа к последнему элементу, мне также нужно получить доступ к предыдущему элементу в моей логике, если это вызывает проблему, как правильно получить доступ к последнему и предыдущему элементу.

1 Ответ

0 голосов
/ 01 ноября 2018

вы можете использовать хвост

df=df.fillna(0)
if (df['ST_100_0.885'].tail(1) <= df['close'].tail(1)):
   print("test passed")

'редактировать'

df=df.fillna(0)
if (df['ST_100_0.885'][df.index[-1]] >= df['close'][df.index[-1]]):
    print("test passed")

из

test passed

Вы также можете попробовать использовать iget

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