0 Pluspunkte 0 Minuspunkte

Wie kann ich mit Python eine Schleife über alle Zeilen einer Excel Tabelle machen um dann Spalten miteinander zu vergleichen? Ich habe diesen Code

import pandas as pd

excel_datei = "1.xlsx"

df = pd.read_excel(excel_datei)

# print(df.columns)

for index, row in df.iterrows():
    spalte1_wert = row["A"]
    spalte2_wert = row["B"]
    
    if spalte1_wert > spalte2_wert:
        print("Wert in Spalte 1 ist größer als Wert in Spalte 2 in Zeile", index)
    elif spalte1_wert < spalte2_wert:
        print("Wert in Spalte 1 ist kleiner als Wert in Spalte 2 in Zeile", index)
    else:
        print("Werte in Spalte 1 und Spalte 2 sind gleich in Zeile", index)

Als Fehler erhalte ich aber

Traceback (most recent call last):
  File "C:\Users\danny\AppData\Local\Programs\Python\Python310\lib\site-packages\pandas\core\indexes\base.py", line 3805, in get_loc
    return self._engine.get_loc(casted_key)
  File "index.pyx", line 167, in pandas._libs.index.IndexEngine.get_loc
  File "index.pyx", line 196, in pandas._libs.index.IndexEngine.get_loc
  File "pandas\\_libs\\hashtable_class_helper.pxi", line 2606, in pandas._libs.hashtable.Int64HashTable.get_item
  File "pandas\\_libs\\hashtable_class_helper.pxi", line 2630, in pandas._libs.hashtable.Int64HashTable.get_item
KeyError: 0

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Users\danny\Desktop\excel2.py", line 10, in <module>
    spalte1_wert = row[0]
  File "C:\Users\danny\AppData\Local\Programs\Python\Python310\lib\site-packages\pandas\core\series.py", line 1112, in __getitem__
    return self._get_value(key)
  File "C:\Users\danny\AppData\Local\Programs\Python\Python310\lib\site-packages\pandas\core\series.py", line 1228, in _get_value
    loc = self.index.get_loc(label)
  File "C:\Users\danny\AppData\Local\Programs\Python\Python310\lib\site-packages\pandas\core\indexes\base.py", line 3812, in get_loc
    raise KeyError(key) from err
KeyError: 0

Die XLSX Datei hat nur 2 Zeilen mit 2 Spalten. In allen Zellen stehen Ziffern.

von  
Stehen in der ersten Zeile des Arbeitsblatt die Spaltennamen?
Nein ich verwende die Spaltennamen in Excel. A, B, C,...

1 Antwort

0 Pluspunkte 0 Minuspunkte

Wenn du keine Header Zeilen hast dann müsstest du die Zeile

df = pd.read_excel(excel_datei)

zu

df = pd.read_excel(excel_datei, header=None)

ändern. Und auf die Spalten kannst du mit numerischen Indizes zugfreifen.

for index, row in df.iterrows():
    spalte1_wert = row[0]
    spalte2_wert = row[1]
von (706 Punkte)