Python 3.x - lci déclenche une erreur - “seul de position de l'indexeur est hors-limites”

Je suis en raclant les données de l'élection d'un site web et d'essayer de le stocker dans un dataframe

import pandas as pd
import bs4
import requests

columns = ['Candidate','Party','Criminal Cases','Education','Age','Total Assets','Liabilities']

df = pd.DataFrame(columns = columns)

ind=1

url = requests.get("http://myneta.info/up2007/index.php?action=show_candidates&constituency_id=341")
soup = bs4.BeautifulSoup(url.content)

for content in soup.findAll("td")[16:]:
    df.iloc[ind//7,ind%7-1] = content.text
    ind=ind+1
print(df)

Essentiellement, à chaque itération de contenu.le texte va me fournir une valeur qui va me remplir dans le tableau. La boucle va peupler les valeurs de df dans la séquence suivante -

df[0,0]
df[0,1]
df[0,2]
.
.
.
df[1,0]
df[1,1]
.
.

et ainsi de suite. Malheureusement, le lci est de lancer une erreur - "seul de position de l'indexeur est hors-limites". Le plus drôle, c'est quand j'essaie df.iloc[0,0] = content.text en dehors de la boucle for (dans une cellule séparée pour objectif de test), le code fonctionne correctement, mais dans la boucle for, il crée une erreur. Je crois qu'il pourrait être quelque chose de trivial, mais je suis incapable de le comprendre.S'il vous plaît aider

Inclure le traceback lorsque vous demandez pourquoi un morceau de code ne fonctionne pas, si vous obtenez toute. ind%7-1 produira -1 pour 7, ce qui est probablement à vous jeter hors. Aussi, est votre exemple? DataFrame.iloc ne devraient même pas être en mesure d'ajouter des données (ou j'ai raté quelque chose dans votre exemple).
je suis d'accord, mais qui va se passer après la boucle for a couru 6 fois. Le problème est que ce n'est pas en cours d'exécution même une fois. J'ai une logique de gestion des 'ind =7', mais pour arriver à cette logique , 'ind=1,2..." exécuter en premier
La question est toujours debout qu'à l'aide de iloc vous ne devriez pas être en mesure d'ajouter à un DataFrame. Votre df est initialement vide.
Permettez-moi d'élucider plus simplement. Le problème revient finalement à quelque chose de ce genre - ' df1 = pd.DataFrame(colonnes= ['a','b','c']) df1.lci[0,0]=1 - # Ne fonctionne pas de la Sortie - la seule position de l'indexeur est hors des limites du terrain df1.loc[0,'a']=1 - nombre de Travaux d'impression(df1) de Sortie a b c 0 1 NaN NaN'
Quelle est la version de pandas utilisez-vous?

OriginalL'auteur Rohan Bapat | 2016-06-22