GOOGLE ADS

martes, 3 de mayo de 2022

Bloqueo del sistema usando pandas para datetimeindex

Estoy tratando de abrirme camino a través de este tutorial de RealPython en el paquete de visualización de Python llamado bokeh https://realpython.com/lessons/using-columndatasource-object/#transcript. Esta versión de video tiene 2,5 años y la versión de texto que la precedió tiene 3,5 años https://realpython.com/python-data-visualization-bokeh/#generating-your-first-figure. No hace falta decir que aquí y allá tampoco funcionan como se esperaba debido a cambios en los programas afectados.

En este punto en particular, estoy tratando de poner un índice de fecha y hora en un marco de datos que se creó a partir de algunos datos CSV. El problema es que cada vez que ejecuto esto, una vez anoche y dos veces esta mañana, todo el sistema se congela y tengo que reiniciar la computadora. No hay mensaje de error u otra salida.

Python 3.9.12 bokeh 2.4.2 pandas 1.3.3 Ubuntu 20.04 LTS PyCharm 2020.1

Aquí está el guión:

import pandas as pd
from pandas import Timestamp
from datetime import datetime, date
import time
start = time.time()
player_stats = pd.read_csv('data/2017-18_playerBoxScore.csv', index_col='gmDate')
team_stats = pd.read_csv('data/2017-18_teamBoxScore.csv', index_col='gmDate')
standings = pd.read_csv('data/2017-18_standings.csv', index_col='stDate')
dti_p = pd.DatetimeIndex(player_stats.index)
dti_t = pd.DatetimeIndex(team_stats.index)
dti_s = pd.DatetimeIndex(standings.index)
player_stats.replace(to_replace=player_stats.index, value=dti_p, inplace=True)
team_stats.replace(to_replace=team_stats.index, value=dti_t, inplace=True)
standings.replace(to_replace=standings.index, value=dti_s, inplace=True)
end = time.time()
prgrm = start-end
print(f"start: {start}")
print(f"total time = {prgrm}")
print(f"end: {end}")

Esta versión usa DatetimeIndex() y replace(), pero anteriormente probé.apply() y Timestamp.date() sin éxito. Al escribir esta publicación, ejecuté el script nuevamente solo para ver qué cobertura y el depurador me darían antes de publicar y ahora, por razones que no puedo explicar, recibo un error:

/home/malikarumi/.virtualenvs/chronicle/lib/python3.9/site-packages/pandas/core/indexing.py
def _validate_key_length(self, key: Sequence[Any]) -> None:
line 791 → if len(key) > self.ndim:
raise IndexingError("Too many indexers")
(<class 'pandas.core.indexing.IndexingError'>, IndexingError('Too many indexers'), <traceback object at 0x7fe8c8d45b80>)

Su ayuda muy apreciada.


Solución del problema

¿Esto da el resultado deseado? (para player_stats)

player_stats = pd.read_csv('data/2017-18_playerBoxScore.csv')
player_stats['gmDate'] = pd.to_datetime(player_stats['gmDate'])
player_stats.set_index('gmDate', inplace=True)

No hay comentarios.:

Publicar un comentario

Flutter: error de rango al acceder a la respuesta JSON

Estoy accediendo a una respuesta JSON con la siguiente estructura. { "fullName": "FirstName LastName", "listings...