Обработка столбца даты и времени в Pandas: как исправить «Ошибка типа: требуется целое число» в pandas. Исключение, вызывающее другое исключение - PullRequest
0 голосов
/ 01 октября 2019

Я преобразовал столбец даты в два столбца даты и времени месяца и дня. Затем я пытаюсь отфильтровать по столбцу месяца, а также рассчитать режим этого столбца. Я продолжаю получать сообщения TypeError, которые вызывают другое исключение.

df['Start Time'] = pd.to_datetime(df['Start Time'])
    df['months'] = df['Start Time'].dt.month #strftime("%B")
    df['day_of_week'] = df['Start Time'].dt.weekday_name

    if day != 'all':
        df = df.day_of_week.str.contains(day.title())

    if month != 'all':
        month = month.title()
        months = ['January', 'February', 'March', 'April', 'May', 'June']
        month = months.index(month) + 1
    #filter by month to create the new dataframe
        df = df[df['months'] == month]
    return df

popular_month = df['months'].mode()[0]

Я ожидаю, что функция возвратит фрейм данных, отфильтрованный по значению "month", а другая строка кода закодирует, чтобы вернуть самый популярный месяц. Я получаю эту ошибку:

Traceback (most recent call last):
  File "C:something/yet_another.py", line 308, in <module>
    main()
  File "C:something/yet_another.py", line 289, in main
    df = load_data(city, month, day)
  File "C:/something/yet_another.py", line 133, in load_data
    df = df[df['months'] == month]
  File "C:something\venv\lib\site-packages\pandas\core\series.py", line 1068, in __getitem__
    result = self.index.get_value(self, key)
  File "C:\soemthing\venv\lib\site-packages\pandas\core\indexes\base.py", line 4730, in get_value
    return self._engine.get_value(s, k, tz=getattr(series.dtype, "tz", None))
  File "pandas\_libs\index.pyx", line 80, in pandas._libs.index.IndexEngine.get_value
  File "pandas\_libs\index.pyx", line 88, in pandas._libs.index.IndexEngine.get_value
  File "pandas\_libs\index.pyx", line 128, in pandas._libs.index.IndexEngine.get_loc
  File "pandas\_libs\index_class_helper.pxi", line 91, in pandas._libs.index.Int64Engine._check_type
KeyError: 'months'

1 Ответ

0 голосов
/ 01 октября 2019

Эта строка вызывает ваши проблемы:

df = df.day_of_week.str.contains(day.title())

Вы перезаписываете df с Series из True, False.

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