Dictionary und pandas

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
superschlau
User
Beiträge: 26
Registriert: Mittwoch 4. April 2018, 09:12

Hallo zusammen
Ich versuche eine Berechnung in pandas unter Verwendung von Funktionen durchzuführen.

Code: Alles auswählen

df['Bezirk2022'] = steuerbetragBezirk(periodeFuss, df["EEStGem2019"], df["BEZIRK"])
Wobei df natürlich eine DataFrame ist.

Die Funktion steuerbetragBezirk sieht wie folgt aus:

Code: Alles auswählen

def steuerbetragBezirk(periode, einfachesteuer, bezirk):
    betrag = bezirkFuss[periode][bezirk] * einfachesteuer
    return round(betrag * 20, 0) / 20
Dabei verwende ich ein Dictionary bezirkFuss, das so aussieht:

Code: Alles auswählen

bezirkFuss = {2019: {'Schwyz': 0.55, 'Gersau': 2.2, 'March': 0.45, 'Einsiedeln': 2.3, 'Küssnacht': 1.65, 'Höfe': 0.15},
              2020: {'Schwyz': 0.5 , 'Gersau': 2.1, 'March': 0.45, 'Einsiedeln': 2.3, 'Küssnacht': 1.65, 'Höfe': 0.15},
              2021: {'Schwyz': 0.5 , 'Gersau': 2.1, 'March': 0.45, 'Einsiedeln': 2.3, 'Küssnacht': 1.65, 'Höfe': 0.15},
              2022: {'Schwyz': 0.5 , 'Gersau': 1.9, 'March': 0.43, 'Einsiedeln': 2.2, 'Küssnacht': 1.65, 'Höfe': 0.14},
              2023: {'Schwyz': 0.4 , 'Gersau': 1.9, 'March': 0.4 , 'Einsiedeln': 2.2, 'Küssnacht': 1.65, 'Höfe': 0.14},
             }

Mit dieser Anwendung bekomme ich eine Fehlermeldung:

Code: Alles auswählen

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In [270], line 2
      1 df['Kanton2022'] = steuerbetragKanton(periodeFuss, df["EEStKt2019"])
----> 2 df['Bezirk2022'] = steuerbetragBezirk(periodeFuss, df["EEStGem2019"], df["BEZIRK"])
      3 df['Gemeindek2022'] = steuerbetragGemeinde(periodeFuss, df["EEStGem2019"], df["GEMEINDE"])

Cell In [266], line 8, in steuerbetragBezirk(periode, einfachesteuer, bezirk)
      6 def steuerbetragBezirk(periode, einfachesteuer, bezirk):
      7     #betrag = bezirkFuss[str(periode)][bezirk] * einfachesteuer
----> 8     betrag = bezFuss[bezirk] * einfachesteuer
      9     return round(betrag * 20, 0) / 20

TypeError: unhashable type: 'Series'
Ich sehe das Problem nicht. Kann mir jemand weiterhelfen??
Benutzeravatar
__blackjack__
User
Beiträge: 13116
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@superschlau: Du hast ein Wörterbuch das Zahlen auf Werte abbildet und versuchst da mit einem `Series`-Objekt, also einer ganzen Spalte aus einem DataFrame zuzugreifen. Das geht nicht.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten