2017-10-02 2 views
1

Ich habe versucht, eine eindeutige Kennung Variable aus dem Index für die Cluster-Trainingsdaten zu schaffen, mit der Cluster-Zuordnung VariableTypeerror: Argument vom Typ ‚int‘ ist nicht iterable

clus_train.reset_index(level=0, inplace=True) 

Es wirft einen Fehler zu fusionieren sagen, dass

TypeError         Traceback (most recent call last) 
<ipython-input-41-d0d098349dbc> in <module>() 
    1 # create a unique identifier variable from the index for the 
    2 # cluster training data to merge with the cluster assignment variable 
----> 3 clus_train.reset_index(level=0, inplace=True) 

C:\Users\3016205\AppData\Local\Continuum\Anaconda3\lib\site- 
packages\pandas\core\frame.py in reset_index(self, level, drop, inplace, 
col_level, col_fill) 
3053     # to ndarray and maybe infer different dtype 
3054     level_values = _maybe_casted_values(lev, lab) 
-> 3055     if level is None or i in level: 
3056      new_obj.insert(0, name, level_values) 
3057 

TypeError: argument of type 'int' is not iterable 

Können Sie bitte mit diesem helfen. Ich verwende Python 3.x

+2

Daten zählt. Dieses Snippet reproduziert Ihren Fehler nicht. Bitte fügen Sie den Kontext 'df = pd.DataFrame ([[1, 2], [3, 4]]) hinzu; df.reset_index (level = 0, inplace = True) ' – piRSquared

+2

Was ist deine Pandas Version? Aus dem Fehler scheint es, dass es ein Iterable für das Level-Argument erwartet. Haben Sie versucht, 'clus_train.reset_index (level = [0])' '? – ayhan

+1

'i in level' erwartet ein Objekt, das Containment unterstützt; "level" ist "0", eine Ganzzahl, die nicht iterierbar ist. –

Antwort

-1

Sie übergeben level als Variable mit dem Wert 0. Dann verwenden Sie das Schlüsselwort in, um zu sehen, ob iin die level Variable ist. Das Schlüsselwort in bedeutet im Grunde genommen "schau in diese Liste/set/string/what-have-you und schau, ob diese andere Variable darin enthalten ist". Python versucht, in Ihre level Variable zu sehen und stellt fest, dass es ein int ist und nicht weiß, was zu tun ist, weil Sie nicht in ein int schauen können. Es ist nur seine eigene Sache, kein Container für andere Dinge.

+0

Das OP verwendet Pandas.reset_index() ** wie dokumentiert **. Dies ist ein Fehler in der Implementierung von 'reset_index()', nichts, was das OP falsch gemacht hat. –

4

Sie haben einen Fehler in Pandas getroffen; Sie verwenden reset_index() auf einem Datenrahmen mit einem Single-Set-Index mit einer Pandas-Version irgendwo zwischen 0.19.2 und 0.20.1. Dies ist issue #16263:

between v0.19.2 and v0.20.1, the behavior of DataFrame.reset_index changed. With a single set index:

  • It does not attempt to keep the column (essentially making drop=True always on)
  • level=int no longer works (iterables work)

Upgrade-Pandas zu 0.20.2 oder neuer.

Wie der Fehlerbericht Notizen, eine vorübergehende Umgehung wäre level=[0] zu verwenden.

+0

Ja, ich habe aktualisiert, aber es funktioniert immer noch nicht –

+0

@VenkateshSubramaniam: Haben Sie den gleichen Fehler immer noch, mit dem gleichen Traceback und Zeilennummern? Dann haben Sie die Pandas-Bibliothek, die Ihr Python-Code verwendet, nicht aktualisiert. Wenn Sie einen * neuen * Fehler an einem anderen Ort haben, dann hatten Sie zwei verschiedene Probleme, dieses wurde gelöst. Das könnte eine neue Frage sein. –

+0

@VenkateshSubramaniam: jedoch * funktioniert nicht * sagt mir nichts darüber, was stattdessen passiert, so kann ich dir nicht helfen. –

Verwandte Themen