Estoy tratando de codificar información para leer en un modelo de Machine Learning usando lo siguiente
import numpy as np import pandas as pd import matplotlib.pyplot as py Dataset = pd.read_csv('filename.csv', sep = ',') X = Dataset.iloc[:,:-1].values Y = Dataset.iloc[:,18].values from sklearn.preprocessing import LabelEncoder, OneHotEncoder labelencoder_X = LabelEncoder() X[:, 0] = labelencoder_X.fit_transform(X[:, 0]) onehotencoder = OneHotEncoder(categorical_features = [0]) X = onehotencoder.fit_transform(X).toarray()sin embargo, recibo un error que dice
IndexError: single positional indexer is out-of-boundsEste error es causado por:
Y = Dataset.iloc[:,18].valuesLa indexación está fuera de los límites aquí probablemente porque hay menos de 19 columnas en su conjunto de datos, por lo que la columna 18 no existe. El siguiente código que proporcionó no usa Y en absoluto, por lo que puede comentar esta línea por ahora.
Esto sucede cuando indexa una fila/columna con un número que es más grande que las dimensiones de su dataframe de datos. Por ejemplo, obtener la undécima columna cuando solo tiene tres.
import pandas as pd df = pd.DataFrame({'Name': ['Mark', 'Laura', 'Adam', 'Roger', 'Anna'], 'City': ['Lisbon', 'Montreal', 'Lisbon', 'Berlin', 'Glasgow'], 'Car': ['Tesla', 'Audi', 'Porsche', 'Ford', 'Honda']})Tienes 5 filas y tres columnas :
Name City Car 0 Mark Lisbon Tesla 1 Laura Montreal Audi 2 Adam Lisbon Porsche 3 Roger Berlin Ford 4 Anna Glasgow HondaIntentemos indexar la undécima columna (no existe):
df.iloc[:, 10] # there is obviously no 11th columnIndexError: el indexador posicional único está fuera de los límites
Si es un principiante con Python, recuerde que df.iloc[:, 10] se referiría a la undécima columna.
No ayuda para la solución de la pregunta aquí, pero quien quiera que venga aquí por el error y no por el ejemplo, tuve este error IndexError: single positional indexer is out-of-bounds cuando traté de encontrar una fila en un dataframe2 mientras recorre las filas de dataframe1, usa muchos criterios en el filtro de dataframe2 y agrega cada fila encontrada a un nuevo dataframe3 vacío (¡No me preguntes por qué!). Uno de los valores en la fila era un valor "nan" tanto en dataframe1 como en dataframe2. Ya no pude filtrar ni agregar una nueva fila.
Solución:
dataframe1.fillna("nan") # or whatever you want as a fill value dataframe2.fillna("nan")y el script se ejecutó sin el error.