как взять значение даты / времени из пользовательского ввода (выбор календаря) в Python - PullRequest
1 голос
/ 15 января 2020

Я новичок в Python и пытаюсь записать свои сенсорные данные в ' totalList '. Вот что я сделал:

  # Initialize data frame
df1 = pd.read_csv(
     "/Users/ME/Desktop/Frontend/sensor_points.csv",
    dtype=object,
)
df = pd.concat([df1], axis=0)
df["Date/Time"] = pd.to_datetime(df["Date/Time"], format="%Y-%m-%d %H:%M")
df.index = df["Date/Time"]
df.drop("Date/Time", 1, inplace=True)
totalList = []
for month in df.groupby(df.index.month):
    dailyList = []
    for day in month[1].groupby(month[1].index.day):
        dailyList.append(day[1])
    totalList.append(dailyList)
totalList = np.array(totalList)

Итак, моя проблема в том, что код считает, что значение месяца в month для -l oop всегда будет повторяться через 1, 2, ..., 12 и день для -l oop через 1,2, ..., 31. Но это не гарантировано. Поскольку мой CSV не состоит из данных за все месяцы и дни, для некоторых дат в средстве выбора календаря я получаю

ошибку 'index-out-of-range' для totalList

Я знаю, что это потому, что на самом деле форма totalList сильно зависит от содержимого моих входных данных (файл CSV). Допустим, файл содержит записи только за 3 месяца (например, январь май и De c.), Затем len (totalList) == 3

Кто-нибудь знает, как я могу решить эту проблему?

1 Ответ

0 голосов
/ 16 января 2020

Ваша проблема будет при доступе к TotalList с вашего сайта. (Вы пытаетесь получить доступ к индексу в вашем списке, который не существует). Вы должны просто включить предложение или метод try / Кроме того, чтобы обработать пропущенные значения. Смотрите следующий пример:

>>> x = [1,2,3]
>>> x[0]
1
>>> x[4]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>> try:
...     x[4]
... except IndexError:
...     print("No such value exists")
...
No such value exists

Надеюсь, это поможет. В качестве альтернативы можно указать ваш список / массив, заполнить его фиктивной переменной и обработать ее при доступе

>>> x = ["empty"]*4
>>> x[0] = 1
>>> x[1] = 2
>>> x[2] = 3
>>> x
[1, 2, 3, "empty"]
>>> x[0]
1
>>> x[3]
'empty'
...