Hallo an Alle!
Ich habe mir ein kleines Skript geschrieben, welches mir die Formatierung von .xls Dateien erleichtern soll.
Python 3.6 (Anaconda) mit Numpy & Pandas, Skript über Sublime Text 3.
-----------------------------------------------------------------------------------------------------------
1) df = pd.read_excel("Pfad/input.xls") => funktioniert
2) df = df.drop([0,1], axis=1) => [wirft Fehlermeldung aus: KeyError: '[0 1] not found in axis']
3) writer = pd.ExcelWriter("test.xlsx", engine = "xlsxwriter") => funktioniert
4) df.to_excel(writer, sheet_name="sheet1") => funktioniert
5) writer.save() => funktioniert
-----------------------------------------------------------------------------------------------------------
zu 2) Komischerweise funktioniert dies nicht, obwohl df = df.drop([0,1], axis=1) als Beispiel im doc angegeben ist... (https://pandas.pydata.org/pandas-docs/s ... .drop.html)
Ziel ist es, aus input.xls die Spalten mit Index 0 bis inklusive 4 zu entfernen und dann jede zweite Spalte zu entfernen:
input: 0,1,2,3,4,5,6,7,8,9[etc.] => output: 5,7,9,11,13,15 [etc.]
Evtl. kann dieses Code-Stückchen dabei helfen: df = df.iloc[[0,-1], [lambda x: x.index % 2 == 1]]
Kann mir Jemand helfen, die Spalten zu entfernen?
Vielen Dank und schöne Grüße!
HerrBert
Pandas - Wo liegt der Fehler?
Die Spalten haben Namen (die erste Zeile der Excel-Datei). Und statt Spalten wegzuwerfen, ist es lesbarer, die Spalten auszuwählen, die Du behalten willst:
Über df.columns kann man sich die auch geben lassen und passend Slicen.
Code: Alles auswählen
df = df [['Spalte5', 'Und 7', 'dann die 9']]
Der von dir versuchte Code steht nicht in dem Beispiel.
Da steht das hier:
Mit [0, 1] sind in dem Beispiel die erste und zweite REIHE gemeint, mit der Angabe axis=1 willst du aber SPALTEN entfernen.
Und Spalten mit dem Namen "0" und "1" gibt es weder im Beispiel noch in deiner xls-Datei.
Da steht das hier:
Code: Alles auswählen
>>> df = pd.DataFrame(np.arange(12).reshape(3,4),
... columns=['A', 'B', 'C', 'D'])
>>> df
A B C D
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
>>> df.drop([0, 1])
A B C D
2 8 9 10 11
Und Spalten mit dem Namen "0" und "1" gibt es weder im Beispiel noch in deiner xls-Datei.
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png