Доступ к значению, соответствующему метке времени из базы данных, возвращает серию вместо одного значения numpy.float64 - PullRequest
0 голосов
/ 12 июня 2019

У меня есть два кода, которые подробно описаны ниже.

Код 1: считывает CSV-файл, содержащий метку времени в виде одного столбца и соответствующие значения для каждой метки времени в качестве другого столбца.

Код 2: считывает базу данных и извлекает данные из базы данных, имеющей два столбца - метку времени в виде одного столбца и соответствующие значения для каждой метки времени в качестве другого столбца.

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

Однако для кода 2, когда я пытаюсь напечатать значение, соответствующее метке времени, он печатает серию, имеющую одно значение типа объекта.

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

Попробовал следующее:

  1. Преобразовал тип объекта в numpy.float64. Все еще возвращает серию.
  2. Считайте базу данных, конвертируйте ее в формат .csv, снова прочитайте файл .csv и попытайтесь получить доступ. Все еще возвращает серию.

    from_db = MySQLdb.connect("xx.xx.xx.xx", "abcde", "12345", "TABLE_DB")
    
    sql = "SELECT * FROM `SOME_TABLE` WHERE `THIS IS` = '123456'"
    
    dmd_data = pd.read_sql(sql, con=from_db)
    
    dmd_data = dmd_data.NAME
    
    start_tstamp = '2016-10-08 00:00:00'
    
    start = datetime.datetime.strptime(start_tstamp,f)
    
    fact1 = (start-datetime.timedelta(days=1)).strftime(f)
    

Ожидаемый результат:

In [53]: dmd_data[fact1]
Out[53]: 4454.82406196

In [67]: type(dmd_data[fact1])
Out[67]: numpy.float64

Вывод, который я получаю:

In [53]: dmd_data[fact1]
Out[53]: 
TIMESTAMP
2016-10-07    4454.82406196
Name: DEMAND, dtype: object

In [60]: type(data[fact1])
Out[60]: pandas.core.series.Series

1 Ответ

0 голосов
/ 12 июня 2019

Сначала преобразуйте его в датафрейм:

df = series_data.to_frame()
// series_data is your data existing in 'pandas.core.series.Series' object form

Теперь транспонируем результат

df = df.T

Теперь получите доступ к значению соответствующего ключа. Если проблема не устраняется, проверьте тип данных и ключ прочитанных данных и укажите, что вы предоставляете!

...