iloc geeft ‘IndexError: single positional indexer is out-of-bounds’

Ik probeer wat informatie te coderen om in een Machine Learning-model te lezen met behulp van het volgende

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()

Ik krijg echter een foutmelding met de tekst

IndexError: single positional indexer is out-of-bounds

Antwoord 1, autoriteit 100%

Deze fout wordt veroorzaakt door:

Y = Dataset.iloc[:,18].values

Indexeren is hier niet toegestaan, waarschijnlijk omdat er minder dan 19 kolommen in uw dataset zijn, dus kolom 18 bestaat niet. De volgende code die je hebt opgegeven, maakt helemaal geen gebruik van Y, dus je kunt deze regel nu gewoon uit commentaar plaatsen.


Antwoord 2, autoriteit 18%

Dit gebeurt wanneer u een rij/kolom indexeert met een getal dat groter is dan de afmetingen van uw dataframe. Bijvoorbeeld de elfde kolom krijgen als je er maar drie hebt.

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']})

Je hebt 5 rijen en drie kolommen:

   Name      City      Car
0   Mark    Lisbon    Tesla
1  Laura  Montreal     Audi
2   Adam    Lisbon  Porsche
3  Roger    Berlin     Ford
4   Anna   Glasgow    Honda

Laten we proberen de elfde kolomte indexeren (deze bestaat niet):

df.iloc[:, 10] # there is obviously no 11th column

IndexError: enkele positionele indexer is buiten het bereik

Als je een beginner bent met Python, onthoud dan dat df.iloc[:, 10]zou verwijzen naar de elfde kolom.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

3 − 2 =

Other episodes