как мне выполнить оператор if с использованием массива numpy - PullRequest
0 голосов
/ 05 апреля 2020

Я пытаюсь создать программу для чтения из файла csv, а затем преобразовать времена в файле в массив numpy, который будет задан оператором if следующим образом:

from datetime import date, timedelta, datetime
import pandas as pd
import numpy as np

currentdate = date.today()

sevendaysago = currentdate - timedelta(days=7)

readings = pd.read_csv(r'C:\Users\Csaba\Downloads\BloodGlucoseData.csv')

blood_glucose_readings = readings["Historic Glucose mmol/L"]

dates_and_times = readings["Device Timestamp"]

reading_times_hours = dates_and_times.str.slice(10, 16)

reading_times = np.array(reading_times_hours)

reading_dates = dates_and_times.str.slice(0, 10)

morning_reading = 0

for reading in reading_times:
    if reading_times <= "4:00" and reading_times >= "11:00":
        morning_reading = morning_reading + 1

else:
    morning_reading = morning_reading

однако я продолжаю получать сообщение об ошибке:

Traceback (most recent call last):
  File "C:\Users\Csaba\Documents\Python\Glucose Control Recommendation program.py", line 24, in <module>
    if reading_times <= "4:00" and reading_times >= "11:00":
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

любая помощь приветствуется спасибо

1 Ответ

0 голосов
/ 05 апреля 2020

Поскольку вы выполняете итерацию на reading_times, вы должны использовать reading в операторе if, а не reading_times:

for reading in reading_times:
    if reading <= "4:00" and reading >= "11:00":

reading_times - это массив, как и reading_times <= "4:00". Распечатайте это, чтобы увидеть сами. Подобный массив не может использоваться ни в операторе if, ни в and.

Верно ли отступ в элементе else:?

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