2016-07-11 7 views
1

Hier setzen möchten, ist der Code, den ich durch den Index versuchen, Umbenennungs Pandas Spalte bin Ausführung:„Bus-Fehler: 10“, wenn Pandas Spaltenname

import pandas as pd 

df = pd.read_csv('input.csv', dtype='unicode', delim_whitespace=True) 
df.columns.values[2] = "id" 
print(df) 

Ich bin mir ziemlich sicher, dass dies nicht die bester Ansatz, aber wenn ich diese laufe mit Python 3.5 erhalte ich:

$ python3.5 test.py 
Bus error: 10 

Dies ist das erste Mal, dass ich einen Fehler wie diese zu sehen. Es gibt kein Traceback, nur diese Ausgabezeichenfolge.

Was bedeutet Bus error: 10?


Hier ist der input.csv Inhalt:

visitIp  userId idSite 
128.227.50.161 a  35 
24.222.206.154 a  35 
10.12.0.1  a  35 
10.12.0.1  a  35 
10.12.0.1  a  35 
24.222.206.154 a  35 

(Mit pandas 0.17.1)

+0

Können Sie die CSV teilen? (Können Sie auf einem kleineren CSV replizieren?) –

+0

Für mich stürzt es ab, ohne einen Fehler anzuzeigen. Ich habe es mit 0.18.0 und 0.18.1 (Python 3.5 Win10 64bit) versucht. – ayhan

+0

@AndyHayden der CSV ist da in der Frage an der Unterseite. Vielen Dank. – alecxe

Antwort

2

Bus error tritt auf, wenn ein Prozessor nicht eine ungültige Speicheradresse zugreifen kann.

df.columns ist eine Instanz, wenn Index ein unveränderliches Objekt in Pandas ist. Jede Operation, die sie ändert, gibt tatsächlich ein neues Objekt zurück. Das Ändern seiner Elemente ist unzulässig, zum Beispiel würde df.columns[2] = 'id' eine Ausnahme auslösen.

Sie haben auf zugrunde liegende Daten des Index zugegriffen und diese geändert. Tatsächlich sind nicht die Daten direkt, sondern ein numpiger view der Daten, die ein temporäres Objekt hätte sein können. (Intern Index.values ist eine Eigenschaft, die self._data.view(ndarray) zurückgibt.)

Ich konnte dieses Verhalten auch nicht reproduzieren und ich weiß nicht genau, was passiert ist und warum es jetzt funktioniert. Es kann sehr wohl ein undefiniertes Verhalten im C/Cython Code sein.

+0

Ich habe das Problem in Pandas 0.17.1 reproduziert und konnte nicht in 0.18. Dies ist gut genug, um das Thema zu lösen. Danke für die Erklärung! – alecxe

+0

@alecxe Ich versuchte Pandas 0.17.1 und 0.18.1, aber beide mit numpy 1.11.0, und erhielt den Fehler nicht. – ptrj

+0

Danke für den Versuch. Ich kann es zuverlässig auf Python 3.5, numpy 1.11.1, Pandas 0.17.1 unter Mac OS X reproduzieren. – alecxe

Verwandte Themen