From ec11ae13aa3e0c010d737a94f4d470ed3fc0724c Mon Sep 17 00:00:00 2001 From: TrisNol Date: Thu, 19 Oct 2023 16:35:29 +0200 Subject: [PATCH] checkpoint: Parse table into dict of financial data --- .../API-tests/Bundesanzeiger/notebook.ipynb | 1709 +++++++++++------ 1 file changed, 1125 insertions(+), 584 deletions(-) diff --git a/Jupyter/API-tests/Bundesanzeiger/notebook.ipynb b/Jupyter/API-tests/Bundesanzeiger/notebook.ipynb index cfcf1c6..e67c604 100644 --- a/Jupyter/API-tests/Bundesanzeiger/notebook.ipynb +++ b/Jupyter/API-tests/Bundesanzeiger/notebook.ipynb @@ -18,7 +18,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 77, "metadata": {}, "outputs": [ { @@ -52,85 +52,85 @@ " \n", " \n", " \n", - " 0\n", - " 2023-07-07\n", - " Atos IT-Dienstleistung und Beratung GmbH\n", + " 1\n", + " 2022-10-21\n", + " Stadtwerke Haltern am See Gesellschaft mit bes...\n", " <div class=\"publication_container\">\\n <div cla...\n", " 2021\n", - " []\n", - " {}\n", + " [Auditor(name='Volker Voelcker', company='Pric...\n", + " {'revenue': 46275.0, 'net_income': 1757.0, 'eb...\n", " \n", " \n", - " 2\n", - " 2023-05-10\n", - " Atos IT-Dienstleistung und Beratung GmbH\n", - " <div class=\"publication_container\">\\n <div cla...\n", - " 2021\n", - " [Auditor(name='Eckhard Lewe', company='Grant T...\n", - " {'equity': 23295.0, 'current_assets': 111516.0}\n", - " \n", - " \n", - " 4\n", - " 2022-03-25\n", - " Atos IT-Dienstleistung und Beratung GmbH\n", + " 3\n", + " 2021-10-12\n", + " Stadtwerke Haltern am See Gesellschaft mit bes...\n", " <div class=\"publication_container\">\\n <div cla...\n", " 2020\n", - " [Auditor(name='Eckhard Lewe', company='Warth &...\n", - " {'equity': 23296.0, 'current_assets': 93901.0}\n", + " [Auditor(name='Hubert Ahlers', company='Pricew...\n", + " {'revenue': 47459.0, 'net_income': 1661.0, 'eb...\n", " \n", " \n", " 5\n", - " 2021-03-11\n", - " Atos IT-Dienstleistung und Beratung GmbH\n", + " 2020-12-03\n", + " Stadtwerke Haltern am See Gesellschaft mit bes...\n", " <div class=\"publication_container\">\\n <div cla...\n", " 2019\n", - " [Auditor(name='Eckhard Lewe', company='Warth &...\n", - " {'net_income': 0.0, 'equity': 23296.0, 'curren...\n", + " [Auditor(name='Hubert Ahlers', company='Pricew...\n", + " {'revenue': 45575.0, 'net_income': 1599.0, 'eb...\n", " \n", " \n", " 6\n", - " 2020-03-24\n", - " Atos IT-Dienstleistung und Beratung GmbH\n", + " 2020-01-09\n", + " Stadtwerke Haltern am See Gesellschaft mit bes...\n", " <div class=\"publication_container\">\\n <div cla...\n", " 2018\n", - " [Auditor(name='Ulrich Diersch', company='Warth...\n", - " {'net_income': 0.0, 'equity': 23296.0, 'curren...\n", + " [Auditor(name='Hubert Ahlers', company='Pricew...\n", + " {'revenue': 43898.0, 'net_income': 2043.0, 'eb...\n", + " \n", + " \n", + " 7\n", + " 2019-10-10\n", + " Stadtwerke Haltern am See Gesellschaft mit bes...\n", + " <div class=\"publication_container\">\\n <div cla...\n", + " 2017\n", + " []\n", + " {}\n", " \n", " \n", "\n", "" ], "text/plain": [ - " date company \\\n", - "0 2023-07-07 Atos IT-Dienstleistung und Beratung GmbH \n", - "2 2023-05-10 Atos IT-Dienstleistung und Beratung GmbH \n", - "4 2022-03-25 Atos IT-Dienstleistung und Beratung GmbH \n", - "5 2021-03-11 Atos IT-Dienstleistung und Beratung GmbH \n", - "6 2020-03-24 Atos IT-Dienstleistung und Beratung GmbH \n", + " date company \\\n", + "1 2022-10-21 Stadtwerke Haltern am See Gesellschaft mit bes... \n", + "3 2021-10-12 Stadtwerke Haltern am See Gesellschaft mit bes... \n", + "5 2020-12-03 Stadtwerke Haltern am See Gesellschaft mit bes... \n", + "6 2020-01-09 Stadtwerke Haltern am See Gesellschaft mit bes... \n", + "7 2019-10-10 Stadtwerke Haltern am See Gesellschaft mit bes... \n", "\n", " raw_report jahr \\\n", - "0
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\n", "\n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
Unnamed: 0Anhang31.12.2021 TEURVorjahr TEURUnnamed: 0_level_020202019Veränderungen
Unnamed: 0_level_1T€%T€%T€%
0A. AnlagevermögenNaNNaNNaNUmsatzerlöse47.45997845.5759701.88441
1I. Immaterielle VermögensgegenständeNaNNaNNaNAktivierte Eigenleistungen380.0008400.0009-20.000-50
2Entgeltlich erworbene SoftwareNaN36Sonstige betriebliche Erträge687.00014991.00021-304.000-307
3II. SachanlagenNaNNaNNaNBetriebliche Erträge48.526100046.96610001.56033
41. Grundstücke und BautenNaN7589Materialaufwand34.00770132.6476951.36042
\n", "
" ], "text/plain": [ - " Unnamed: 0 Anhang 31.12.2021 TEUR Vorjahr TEUR\n", - "0 A. Anlagevermögen NaN NaN NaN\n", - "1 I. Immaterielle Vermögensgegenstände NaN NaN NaN\n", - "2 Entgeltlich erworbene Software NaN 3 6\n", - "3 II. Sachanlagen NaN NaN NaN\n", - "4 1. Grundstücke und Bauten NaN 75 89" + " Unnamed: 0_level_0 2020 2019 Veränderungen \\\n", + " Unnamed: 0_level_1 T€ % T€ % T€ \n", + "0 Umsatzerlöse 47.459 978 45.575 970 1.884 \n", + "1 Aktivierte Eigenleistungen 380.000 8 400.000 9 -20.000 \n", + "2 Sonstige betriebliche Erträge 687.000 14 991.000 21 -304.000 \n", + "3 Betriebliche Erträge 48.526 1000 46.966 1000 1.560 \n", + "4 Materialaufwand 34.007 701 32.647 695 1.360 \n", + "\n", + " \n", + " % \n", + "0 41 \n", + "1 -50 \n", + "2 -307 \n", + "3 33 \n", + "4 42 " ] }, - "execution_count": 164, + "execution_count": 81, "metadata": {}, "output_type": "execute_result" } @@ -459,7 +632,7 @@ }, { "cell_type": "code", - "execution_count": 165, + "execution_count": 82, "metadata": {}, "outputs": [], "source": [ @@ -467,7 +640,6 @@ "\n", "\n", "def cleanse_string(value: str) -> str:\n", - " print(value)\n", " if value is not None and isinstance(value, str):\n", " return re.sub(r\"(.+\\.).\", \"\", value)\n", " return None" @@ -475,68 +647,16 @@ }, { "cell_type": "code", - "execution_count": 166, + "execution_count": 83, "metadata": {}, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "A. Anlagevermögen\n", - "I. Immaterielle Vermögensgegenstände\n", - "Entgeltlich erworbene Software\n", - "II. Sachanlagen\n", - "1. Grundstücke und Bauten\n", - "2. Technische Anlagen und Maschinen\n", - "3. Andere Anlagen, Betriebs- und Geschäftsausstattung\n", - "4. Geleistete Anzahlung und Anlagen im Bau\n", - "nan\n", - "III. Finanzanlagen\n", - "Sonstige Ausleihungen\n", - "nan\n", - "B. Umlaufvermögen\n", - "I. Vorräte\n", - "Waren\n", - "II. Forderungen und sonstige Vermögensgegenstände\n", - "1. Forderungen aus Lieferungen und Leistungen\n", - "2. Forderungen gegen verbundene Unternehmen\n", - "3. Sonstige Vermögensgegenstände\n", - "nan\n", - "nan\n", - "C. Rechnungsabgrenzungsposten\n", - "D. Aktiver Unterschiedsbetrag aus der Vermögensverrechnung\n", - "nan\n", - "Passiva\n", - "nan\n", - "A. Eigenkapital\n", - "I. Gezeichnetes Kapital\n", - "II. Kapitalrücklage\n", - "III. Gewinnrücklagen\n", - "Andere Gewinnrücklagen\n", - "IV. Gewinnvortrag\n", - "nan\n", - "B. Rückstellungen\n", - "1. Rückstellungen für Pensionen\n", - "2. Steuerrückstellungen\n", - "3. Sonstige Rückstellungen\n", - "nan\n", - "C. Verbindlichkeiten\n", - "1. Erhaltene Anzahlungen\n", - "2. Verbindlichkeiten aus Lieferungen und Leistungen\n", - "3. Verbindlichkeiten gegenüber verbundenen Unternehmen\n", - "4. Sonstige Verbindlichkeiten\n", - "nan\n", - "D. Rechnungsabgrenzungungsposten\n", - "nan\n" - ] - }, { "name": "stderr", "output_type": "stream", "text": [ - "C:\\Users\\trist\\AppData\\Local\\Temp\\ipykernel_18940\\152097142.py:2: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n", + "C:\\Users\\trist\\AppData\\Local\\Temp\\ipykernel_15672\\152097142.py:2: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n", " current_table.iloc[index][0] = cleanse_string(row[0])\n", - "C:\\Users\\trist\\AppData\\Local\\Temp\\ipykernel_18940\\152097142.py:2: FutureWarning: Series.__setitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To set a value by position, use `ser.iloc[pos] = value`\n", + "C:\\Users\\trist\\AppData\\Local\\Temp\\ipykernel_15672\\152097142.py:2: FutureWarning: Series.__setitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To set a value by position, use `ser.iloc[pos] = value`\n", " current_table.iloc[index][0] = cleanse_string(row[0])\n" ] }, @@ -553,70 +673,104 @@ " vertical-align: top;\n", " }\n", "\n", - " .dataframe thead th {\n", - " text-align: right;\n", + " .dataframe thead tr th {\n", + " text-align: left;\n", " }\n", "\n", "\n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
Unnamed: 0Anhang31.12.2021 TEURVorjahr TEURUnnamed: 0_level_020202019Veränderungen
Unnamed: 0_level_1T€%T€%T€%
0AnlagevermögenNaNNaNNaNUmsatzerlöse47.45997845.5759701.88441
1Immaterielle VermögensgegenständeNaNNaNNaNAktivierte Eigenleistungen380.0008400.0009-20.000-50
2Entgeltlich erworbene SoftwareNaN36Sonstige betriebliche Erträge687.00014991.00021-304.000-307
3SachanlagenNaNNaNNaNBetriebliche Erträge48.526100046.96610001.56033
4Grundstücke und BautenNaN7589Materialaufwand34.00770132.6476951.36042
\n", "
" ], "text/plain": [ - " Unnamed: 0 Anhang 31.12.2021 TEUR Vorjahr TEUR\n", - "0 Anlagevermögen NaN NaN NaN\n", - "1 Immaterielle Vermögensgegenstände NaN NaN NaN\n", - "2 Entgeltlich erworbene Software NaN 3 6\n", - "3 Sachanlagen NaN NaN NaN\n", - "4 Grundstücke und Bauten NaN 75 89" + " Unnamed: 0_level_0 2020 2019 Veränderungen \\\n", + " Unnamed: 0_level_1 T€ % T€ % T€ \n", + "0 Umsatzerlöse 47.459 978 45.575 970 1.884 \n", + "1 Aktivierte Eigenleistungen 380.000 8 400.000 9 -20.000 \n", + "2 Sonstige betriebliche Erträge 687.000 14 991.000 21 -304.000 \n", + "3 Betriebliche Erträge 48.526 1000 46.966 1000 1.560 \n", + "4 Materialaufwand 34.007 701 32.647 695 1.360 \n", + "\n", + " \n", + " % \n", + "0 41 \n", + "1 -50 \n", + "2 -307 \n", + "3 33 \n", + "4 42 " ] }, - "execution_count": 166, + "execution_count": 83, "metadata": {}, "output_type": "execute_result" } @@ -629,7 +783,7 @@ }, { "cell_type": "code", - "execution_count": 167, + "execution_count": 84, "metadata": {}, "outputs": [], "source": [ @@ -655,7 +809,7 @@ }, { "cell_type": "code", - "execution_count": 168, + "execution_count": 85, "metadata": {}, "outputs": [ { @@ -671,76 +825,117 @@ " vertical-align: top;\n", " }\n", "\n", - " .dataframe thead th {\n", - " text-align: right;\n", + " .dataframe thead tr th {\n", + " text-align: left;\n", " }\n", "\n", "\n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
Unnamed: 0Anhang31.12.2021VorjahrUnnamed: 0_level_020202019Veränderungen
Unnamed: 0_level_1T€%T€%T€%
0AnlagevermögenNaNNaNNaNUmsatzerlöse47459.097845575.09701884.041
1Immaterielle VermögensgegenständeNaNNaNNaNAktivierte Eigenleistungen380000.08400000.09-20000.0-50
2Entgeltlich erworbene SoftwareNaN3000.06000.0Sonstige betriebliche Erträge687000.014991000.021-304000.0-307
3SachanlagenNaNNaNNaNBetriebliche Erträge48526.0100046966.010001560.033
4Grundstücke und BautenNaN75000.089000.0Materialaufwand34007.070132647.06951360.042
\n", "
" ], "text/plain": [ - " Unnamed: 0 Anhang 31.12.2021 Vorjahr\n", - "0 Anlagevermögen NaN NaN NaN\n", - "1 Immaterielle Vermögensgegenstände NaN NaN NaN\n", - "2 Entgeltlich erworbene Software NaN 3000.0 6000.0\n", - "3 Sachanlagen NaN NaN NaN\n", - "4 Grundstücke und Bauten NaN 75000.0 89000.0" + " Unnamed: 0_level_0 2020 2019 \\\n", + " Unnamed: 0_level_1 T€ % T€ % \n", + "0 Umsatzerlöse 47459.0 978 45575.0 970 \n", + "1 Aktivierte Eigenleistungen 380000.0 8 400000.0 9 \n", + "2 Sonstige betriebliche Erträge 687000.0 14 991000.0 21 \n", + "3 Betriebliche Erträge 48526.0 1000 46966.0 1000 \n", + "4 Materialaufwand 34007.0 701 32647.0 695 \n", + "\n", + " Veränderungen \n", + " T€ % \n", + "0 1884.0 41 \n", + "1 -20000.0 -50 \n", + "2 -304000.0 -307 \n", + "3 1560.0 33 \n", + "4 1360.0 42 " ] }, - "execution_count": 168, + "execution_count": 85, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "converter = {\"T€\": 1 / 1000, \"TEUR\": 1000, \"EUR\": 1 / 1000, \"€\": 1}\n", + "converter = {\n", + " \"Mio€\": 1 * 10**6,\n", + " \"Mio\": 1 * 10**6,\n", + " \"T€\": 1 * 10**3,\n", + " \"TEUR\": 1 * 10**3,\n", + " \"EUR\": 1,\n", + " \"€\": 1,\n", + "}\n", "\n", "for column in current_table.columns:\n", " if isinstance(column, tuple):\n", @@ -763,12 +958,376 @@ " next\n", " # print(current_table[column])\n", "current_table.dropna(axis=0, how=\"all\", inplace=True)\n", + "current_table.dropna(axis=1, how=\"all\", inplace=True)\n", "current_table.head()" ] }, { "cell_type": "code", - "execution_count": 169, + "execution_count": 86, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Unnamed: 0_level_0 Unnamed: 0_level_1 object\n", + "2020 T€ float64\n", + " % int64\n", + "2019 T€ float64\n", + " % int64\n", + "Veränderungen T€ float64\n", + " % int64\n", + "dtype: object" + ] + }, + "execution_count": 86, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "current_table.dtypes" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "metadata": {}, + "outputs": [], + "source": [ + "# Remove columns hosting non-numerics; excl. first column hosting keys\n", + "columns_to_prune = []\n", + "for column_index, column_type in enumerate(current_table.dtypes[1:]):\n", + " if column_type in [\"object\", \"str\"]:\n", + " columns_to_prune.append(column_index + 1)\n", + "\n", + "current_table = current_table.drop(\n", + " current_table.columns[columns_to_prune], axis=\"columns\"\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Unnamed: 0_level_020202019Veränderungen
Unnamed: 0_level_1T€%T€%T€%
0Umsatzerlöse47459.097845575.09701884.041
1Aktivierte Eigenleistungen380000.08400000.09-20000.0-50
2Sonstige betriebliche Erträge687000.014991000.021-304000.0-307
3Betriebliche Erträge48526.0100046966.010001560.033
4Materialaufwand34007.070132647.06951360.042
5Personalaufwand6258.01296222.013236000.06
6Abschreibungen2239.0462273.048-34000.0-15
7Konzessionsabgabe1331.0271302.02829000.022
8Übrige sonstige betriebliche Aufwendungen2100.0432066.04434000.016
9Betriebliche Aufwendungen45935.094744510.09481425.032
10Ergebnis der betrieblichen Tätigkeit2591.0532456.052135000.055
11Finanzergebnis (Ertrags-/Aufwandsaldo)-13000.00-99000.0-286000.0-869
12sonstige Steuern147000.03164000.03-17000.0-104
13Neutraler Bereich134000.0365000.0186000.01062
14Jahresüberschuss vor Ertragsteuern2457.0512391.05166000.028
15Ertragsteuern796000.016792000.0174000.05
16Jahresüberschuss1661.0341599.03462000.039
\n", + "
" + ], + "text/plain": [ + " Unnamed: 0_level_0 2020 2019 \\\n", + " Unnamed: 0_level_1 T€ % T€ % \n", + "0 Umsatzerlöse 47459.0 978 45575.0 970 \n", + "1 Aktivierte Eigenleistungen 380000.0 8 400000.0 9 \n", + "2 Sonstige betriebliche Erträge 687000.0 14 991000.0 21 \n", + "3 Betriebliche Erträge 48526.0 1000 46966.0 1000 \n", + "4 Materialaufwand 34007.0 701 32647.0 695 \n", + "5 Personalaufwand 6258.0 129 6222.0 132 \n", + "6 Abschreibungen 2239.0 46 2273.0 48 \n", + "7 Konzessionsabgabe 1331.0 27 1302.0 28 \n", + "8 Übrige sonstige betriebliche Aufwendungen 2100.0 43 2066.0 44 \n", + "9 Betriebliche Aufwendungen 45935.0 947 44510.0 948 \n", + "10 Ergebnis der betrieblichen Tätigkeit 2591.0 53 2456.0 52 \n", + "11 Finanzergebnis (Ertrags-/Aufwandsaldo) -13000.0 0 -99000.0 -2 \n", + "12 sonstige Steuern 147000.0 3 164000.0 3 \n", + "13 Neutraler Bereich 134000.0 3 65000.0 1 \n", + "14 Jahresüberschuss vor Ertragsteuern 2457.0 51 2391.0 51 \n", + "15 Ertragsteuern 796000.0 16 792000.0 17 \n", + "16 Jahresüberschuss 1661.0 34 1599.0 34 \n", + "\n", + " Veränderungen \n", + " T€ % \n", + "0 1884.0 41 \n", + "1 -20000.0 -50 \n", + "2 -304000.0 -307 \n", + "3 1560.0 33 \n", + "4 1360.0 42 \n", + "5 36000.0 6 \n", + "6 -34000.0 -15 \n", + "7 29000.0 22 \n", + "8 34000.0 16 \n", + "9 1425.0 32 \n", + "10 135000.0 55 \n", + "11 86000.0 -869 \n", + "12 -17000.0 -104 \n", + "13 86000.0 1062 \n", + "14 66000.0 28 \n", + "15 4000.0 5 \n", + "16 62000.0 39 " + ] + }, + "execution_count": 88, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Prune rows where first columns is None\n", + "import numpy as np\n", + "\n", + "current_table = current_table.replace(to_replace=\"None\", value=np.nan).dropna()\n", + "current_table" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\trist\\AppData\\Local\\Temp\\ipykernel_15672\\340569398.py:3: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n", + " kpis[row[0]] = row[1]\n" + ] + }, + { + "data": { + "text/plain": [ + "{'Umsatzerlöse': 47459.0,\n", + " 'Aktivierte Eigenleistungen': 380000.0,\n", + " 'Sonstige betriebliche Erträge': 687000.0,\n", + " 'Betriebliche Erträge': 48526.0,\n", + " 'Materialaufwand': 34007.0,\n", + " 'Personalaufwand': 6258.0,\n", + " 'Abschreibungen': 2239.0,\n", + " 'Konzessionsabgabe': 1331.0,\n", + " 'Übrige sonstige betriebliche Aufwendungen': 2100.0,\n", + " 'Betriebliche Aufwendungen': 45935.0,\n", + " 'Ergebnis der betrieblichen Tätigkeit': 2591.0,\n", + " 'Finanzergebnis (Ertrags-/Aufwandsaldo)': -13000.0,\n", + " 'sonstige Steuern': 147000.0,\n", + " 'Neutraler Bereich': 134000.0,\n", + " 'Jahresüberschuss vor Ertragsteuern': 2457.0,\n", + " 'Ertragsteuern': 796000.0,\n", + " 'Jahresüberschuss': 1661.0}" + ] + }, + "execution_count": 89, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "kpis = {}\n", + "for _index, row in current_table.iterrows():\n", + " kpis[row[0]] = row[1]\n", + "kpis" + ] + }, + { + "cell_type": "code", + "execution_count": 90, "metadata": {}, "outputs": [], "source": [ @@ -792,7 +1351,7 @@ }, { "cell_type": "code", - "execution_count": 170, + "execution_count": 91, "metadata": {}, "outputs": [ { @@ -816,69 +1375,54 @@ " \n", " \n", " \n", - " Unnamed: 0\n", - " Anhang\n", - " 2021 TEUR\n", - " Vorjahr TEUR\n", + " Investitionen (netto)\n", + " 2020 T€\n", + " 2019 T€\n", + " Veränderung T€\n", " \n", " \n", " \n", " \n", " 0\n", - " 1. Umsatzerlöse\n", - " (1)\n", - " 66.767\n", - " 69.819\n", + " Stromversorgung\n", + " 1.372\n", + " 1.553\n", + " -181.000\n", " \n", " \n", " 1\n", - " 2. Veränderung des Bestandes an unfertigen Lei...\n", - " NaN\n", - " 0.000\n", - " -41.000\n", + " Gasversorgung\n", + " 713.000\n", + " 707.000\n", + " 6.000\n", " \n", " \n", " 2\n", - " 3. Sonstige betriebliche Erträge\n", - " (2)\n", - " 621.000\n", - " 489.000\n", + " sonstige Aktivitäten\n", + " 661.000\n", + " 2.605\n", + " -1.944\n", " \n", " \n", " 3\n", - " 4. Materialaufwand\n", - " NaN\n", - " NaN\n", - " NaN\n", - " \n", - " \n", - " 4\n", - " a) Aufwendungen für bezogene Waren\n", - " NaN\n", - " -475.000\n", - " -1.220\n", + " Insgesamt\n", + " 2.746\n", + " 4.865\n", + " -2.119\n", " \n", " \n", "\n", "
" ], "text/plain": [ - " Unnamed: 0 Anhang 2021 TEUR \\\n", - "0 1. Umsatzerlöse (1) 66.767 \n", - "1 2. Veränderung des Bestandes an unfertigen Lei... NaN 0.000 \n", - "2 3. Sonstige betriebliche Erträge (2) 621.000 \n", - "3 4. Materialaufwand NaN NaN \n", - "4 a) Aufwendungen für bezogene Waren NaN -475.000 \n", - "\n", - " Vorjahr TEUR \n", - "0 69.819 \n", - "1 -41.000 \n", - "2 489.000 \n", - "3 NaN \n", - "4 -1.220 " + " Investitionen (netto) 2020 T€ 2019 T€ Veränderung T€\n", + "0 Stromversorgung 1.372 1.553 -181.000\n", + "1 Gasversorgung 713.000 707.000 6.000\n", + "2 sonstige Aktivitäten 661.000 2.605 -1.944\n", + "3 Insgesamt 2.746 4.865 -2.119" ] }, - "execution_count": 170, + "execution_count": 91, "metadata": {}, "output_type": "execute_result" } @@ -890,7 +1434,7 @@ }, { "cell_type": "code", - "execution_count": 171, + "execution_count": 92, "metadata": {}, "outputs": [ { @@ -906,70 +1450,98 @@ " vertical-align: top;\n", " }\n", "\n", - " .dataframe thead th {\n", - " text-align: right;\n", + " .dataframe thead tr th {\n", + " text-align: left;\n", " }\n", "\n", "\n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", " \n", " \n", "
Unnamed: 0Anhang31.12.2021 TEURVorjahr TEURUnnamed: 0_level_031. Dezember 202031. Dezember 2019Veränderung
Unnamed: 0_level_1T€%T€%T€
0A. AnlagevermögenAnlagevermögenNaNNaNNaNNaNNaN
1I. Immaterielle VermögensgegenständeNaNNaNNaNSachanlagen28.919689.028.812689.0107.000
2Entgeltlich erworbene SoftwareNaN36Finanzanlagen2.66764.04.189100.0-1.522
3II. SachanlagenNaNNaNNaN31.586753.033.001789.0-1.415
41. Grundstücke und BautenUmlaufvermögenNaNNaNNaNNaNNaN7589
\n", "
" ], "text/plain": [ - " Unnamed: 0 Anhang 31.12.2021 TEUR Vorjahr TEUR\n", - "0 A. Anlagevermögen NaN NaN NaN\n", - "1 I. Immaterielle Vermögensgegenstände NaN NaN NaN\n", - "2 Entgeltlich erworbene Software NaN 3 6\n", - "3 II. Sachanlagen NaN NaN NaN\n", - "4 1. Grundstücke und Bauten NaN 75 89" + " Unnamed: 0_level_0 31. Dezember 2020 31. Dezember 2019 \\\n", + " Unnamed: 0_level_1 T€ % T€ % \n", + "0 Anlagevermögen NaN NaN NaN NaN \n", + "1 Sachanlagen 28.919 689.0 28.812 689.0 \n", + "2 Finanzanlagen 2.667 64.0 4.189 100.0 \n", + "3 NaN 31.586 753.0 33.001 789.0 \n", + "4 Umlaufvermögen NaN NaN NaN NaN \n", + "\n", + " Veränderung \n", + " T€ \n", + "0 NaN \n", + "1 107.000 \n", + "2 -1.522 \n", + "3 -1.415 \n", + "4 NaN " ] }, - "execution_count": 171, + "execution_count": 92, "metadata": {}, "output_type": "execute_result" } @@ -980,7 +1552,7 @@ }, { "cell_type": "code", - "execution_count": 172, + "execution_count": 93, "metadata": {}, "outputs": [ { @@ -990,145 +1562,40 @@ " \n", " \n", " \n", - " Unnamed: 0\n", - " Anhang\n", - " 2021 TEUR\n", - " Vorjahr TEUR\n", + " Investitionen (netto)\n", + " 2020 T€\n", + " 2019 T€\n", + " Veränderung T€\n", " \n", " \n", " \n", " \n", " 0\n", - " 1. Umsatzerlöse\n", - " (1)\n", - " 66.767\n", - " 69.819\n", + " Stromversorgung\n", + " 1.372\n", + " 1.553\n", + " -181.000\n", " \n", " \n", " 1\n", - " 2. Veränderung des Bestandes an unfertigen Leistungen\n", - " NaN\n", - " 0.000\n", - " -41.000\n", + " Gasversorgung\n", + " 713.000\n", + " 707.000\n", + " 6.000\n", " \n", " \n", " 2\n", - " 3. Sonstige betriebliche Erträge\n", - " (2)\n", - " 621.000\n", - " 489.000\n", + " sonstige Aktivitäten\n", + " 661.000\n", + " 2.605\n", + " -1.944\n", " \n", " \n", " 3\n", - " 4. Materialaufwand\n", - " NaN\n", - " NaN\n", - " NaN\n", - " \n", - " \n", - " 4\n", - " a) Aufwendungen für bezogene Waren\n", - " NaN\n", - " -475.000\n", - " -1.220\n", - " \n", - " \n", - " 5\n", - " b) Aufwendungen für bezogene Leistungen\n", - " NaN\n", - " -12.855\n", - " -12.457\n", - " \n", - " \n", - " 6\n", - " 5. Personalaufwand\n", - " NaN\n", - " NaN\n", - " NaN\n", - " \n", - " \n", - " 7\n", - " a) Gehälter\n", - " NaN\n", - " -52.916\n", - " -45.242\n", - " \n", - " \n", - " 8\n", - " b) Soziale Abgaben und Aufwendungen für Altersversorgung und für Unterstützung\n", - " NaN\n", - " -9.945\n", - " -9.999\n", - " \n", - " \n", - " 9\n", - " davon für Altersversorgung: TEUR 1.817 (Vorjahr: TEUR 1.676)\n", - " NaN\n", - " NaN\n", - " NaN\n", - " \n", - " \n", - " 10\n", - " 6. Abschreibungen auf immaterielle Vermögensgegenstände des Anlagevermögens und Sachanlagen\n", - " NaN\n", - " -165.000\n", - " -201.000\n", - " \n", - " \n", - " 11\n", - " 7. Sonstige betriebliche Aufwendungen\n", - " (3)\n", - " -4.968\n", - " -7.356\n", - " \n", - " \n", - " 12\n", - " 8. Zinsen und ähnliche Aufwendungen\n", - " NaN\n", - " -6.170\n", - " -10.748\n", - " \n", - " \n", - " 13\n", - " davon aus der Aufzinsung von Rückstellungen: TEUR 6.116 (Vorjahr: TEUR 10.730)\n", - " NaN\n", - " NaN\n", - " NaN\n", - " \n", - " \n", - " 14\n", - " 9. Steuern vom Einkommen und vom Ertrag\n", - " NaN\n", - " 35.000\n", - " 0.000\n", - " \n", - " \n", - " 15\n", - " 10. Ergebnis vor sonstigen Steuern und Verlustübernahme\n", - " NaN\n", - " -20.072\n", - " -16.956\n", - " \n", - " \n", - " 16\n", - " 11. Sonstige Steuern\n", - " NaN\n", - " 0.000\n", - " -7.000\n", - " \n", - " \n", - " 17\n", - " 12. Erträge aus Verlustübernahme\n", - " NaN\n", - " 20.072\n", - " 16.963\n", - " \n", - " \n", - " 18\n", - " 13. Jahresergebnis\n", - " NaN\n", - " 0.000\n", - " 0.000\n", + " Insgesamt\n", + " 2.746\n", + " 4.865\n", + " -2.119\n", " \n", " \n", "" @@ -1150,58 +1617,132 @@ }, { "cell_type": "code", - "execution_count": 173, + "execution_count": 94, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ + "MultiIndex([('Unnamed: 0_level_0', 'Unnamed: 0_level_1'),\n", + " ( '2020', 'T€'),\n", + " ( '2019', 'T€'),\n", + " ( 'Veränderung', 'T€'),\n", + " ( 'Veränderung', '%')],\n", + " )\n", + "MultiIndex([('Unnamed: 0_level_0', 'Unnamed: 0_level_1'),\n", + " ( '2020', 'T€'),\n", + " ( '2020', '%'),\n", + " ( '2019', 'T€'),\n", + " ( '2019', '%'),\n", + " ( 'Veränderungen', 'T€'),\n", + " ( 'Veränderungen', '%')],\n", + " )\n", + "MultiIndex([('Unnamed: 0_level_0', 'gerundet'),\n", + " ( '2020', 'T€'),\n", + " ( '2019', 'T€'),\n", + " ( 'Veränderung', 'T€'),\n", + " ( 'Veränderung', '%')],\n", + " )\n", + "MultiIndex([('Unnamed: 0_level_0', 'unkonsolidiert gerundet'),\n", + " ( '2020', 'T€'),\n", + " ( '2019', 'T€'),\n", + " ( 'Veränderung', 'T€'),\n", + " ( 'Veränderung', '%')],\n", + " )\n", + "MultiIndex([('Jahresüberschuss/Jahresfehlbetrag nach Betriebszweigen', ...),\n", + " ( '2020', ...),\n", + " ( '2019', ...),\n", + " ( 'Veränderung', ...),\n", + " ( 'Veränderung', ...)],\n", + " )\n", + "Index(['Unnamed: 0', '2020 T€', '2019 T€'], dtype='object')\n", + "MultiIndex([('Unnamed: 0_level_0', 'Unnamed: 0_level_1'),\n", + " ( '31. Dezember 2020', 'T€'),\n", + " ( '31. Dezember 2020', '%'),\n", + " ( '31. Dezember 2019', 'T€'),\n", + " ( '31. Dezember 2019', '%'),\n", + " ( 'Veränderung', 'T€')],\n", + " )\n", + "Index(['Investitionen (netto)', '2020 T€', '2019 T€', 'Veränderung T€'], dtype='object')\n", + "Index(['Unnamed: 0', '€', '31.12.2019 in T €'], dtype='object')\n", + "Index(['Unnamed: 0', '€', '€.1', '31.12.2019 in T €'], dtype='object')\n", "Index([0, 1], dtype='int64')\n", - "Index(['Unnamed: 0', 'Anhang', '31.12.2021 TEUR', 'Vorjahr TEUR'], dtype='object')\n", - "Index(['Unnamed: 0', 'Anhang', '2021 TEUR', 'Vorjahr TEUR'], dtype='object')\n", - "Index(['Aufgliederung nach Tätigkeitsbereichen', '2021 TEUR',\n", - " 'Vorjahr TEUR'],\n", + "Index(['Beteiligung', 'Anteil', 'Eigenkapital der Beteiligungsgesellschaft',\n", + " 'Eigenkapital der Beteiligungsgesellschaft.1',\n", + " 'Jahresergebnis der Beteiligungsgesellschaft',\n", + " 'Jahresergebnis der Beteiligungsgesellschaft.1'],\n", " dtype='object')\n", - "Index(['Aufgliederung nach Inland und Ausland', '2021 TEUR', 'Vorjahr TEUR'], dtype='object')\n", - "Index(['Unnamed: 0', '31.12.2021 TEUR', 'Vorjahr TEUR'], dtype='object')\n", - "Index(['Unnamed: 0', '31.12.2021 TEUR', 'Vorjahr TEUR'], dtype='object')\n", - "Index(['Unnamed: 0', '31.12.2021'], dtype='object')\n", - "Index(['Unnamed: 0', 'TEUR'], dtype='object')\n", - "Index(['Unnamed: 0', 'TEUR'], dtype='object')\n", - "Index(['Unnamed: 0', 'TEUR'], dtype='object')\n", - "Index([0, 1, 2], dtype='int64')\n", - "Index(['Unnamed: 0', 'TEUR'], dtype='object')\n", - "Index(['Unnamed: 0', '31.12.2021 TEUR', 'Vorjahr TEUR'], dtype='object')\n", - "Index(['Unnamed: 0', '2021 Anzahl MA', 'Vorjahr Anzahl MA'], dtype='object')\n", - "MultiIndex([('Art des Geschäfts', 'Unnamed: 0_level_1'),\n", - " ('Art der Beziehung', 'Gesellschafterin TEUR'),\n", - " ('Art der Beziehung', 'Verbundene Unternehmen TEUR')],\n", - " )\n", - "Index([0, 1], dtype='int64')\n", - "MultiIndex([( 'Unnamed: 0_level_0', ...),\n", - " ('Anschaffungs- oder Herstellungskosten', ...),\n", - " ('Anschaffungs- oder Herstellungskosten', ...),\n", - " ('Anschaffungs- oder Herstellungskosten', ...),\n", - " ('Anschaffungs- oder Herstellungskosten', ...)],\n", - " )\n", - "MultiIndex([('Unnamed: 0_level_0', ...),\n", - " ( 'Abschreibungen', ...),\n", - " ( 'Abschreibungen', ...),\n", - " ( 'Abschreibungen', ...),\n", - " ( 'Abschreibungen', ...)],\n", - " )\n", - "MultiIndex([('Unnamed: 0_level_0', 'Unnamed: 0_level_1'),\n", - " ( 'Buchwerte', 'Stand 31.12.2021 EUR'),\n", - " ( 'Buchwerte', 'Stand 31.12.2020 EUR')],\n", - " )\n", - "Index(['Nichtfinanzieller Leistungsindikator', 'Unnamed: 1', '2021', '2020',\n", - " '2019'],\n", + "Index(['Beteiligung', 'Anteil', 'Eigenkapital der Beteiligungsgesellschaft',\n", + " 'Eigenkapital der Beteiligungsgesellschaft.1',\n", + " 'Jahresergebnis der Beteiligungsgesellschaft',\n", + " 'Jahresergebnis der Beteiligungsgesellschaft.1'],\n", " dtype='object')\n", - "Index(['Gewinn- und Verlustrechnung', '2021 TEUR', 'Vorjahr TEUR',\n", - " 'Veränderung TEUR'],\n", + "Index(['Unnamed: 0', '2020', '2019'], dtype='object')\n", + "MultiIndex([( 'Unnamed: 0_level_0', 'Unnamed: 0_level_1'),\n", + " ( 'Unnamed: 1_level_0', 'Gesamt in T€'),\n", + " ('davon mit einer Restlaufzeit', 'bis zu 1 Jahr in T€'),\n", + " ('davon mit einer Restlaufzeit', 'mehr als 1 Jahr in T€'),\n", + " ('davon mit einer Restlaufzeit', 'davon über 5 Jahre in T€')],\n", + " )\n", + "MultiIndex([('Unnamed: 0_level_0', 'Unnamed: 0_level_1'),\n", + " ( '2020', '€'),\n", + " ( '2019', '€'),\n", + " ( 'Veränderung', '€'),\n", + " ( 'Veränderung', '%')],\n", + " )\n", + "MultiIndex([('Unnamed: 0_level_0', 'Unnamed: 0_level_1'),\n", + " ( '2020', '€'),\n", + " ( '2019', '€'),\n", + " ( 'Veränderung', '€'),\n", + " ( 'Veränderung', '%')],\n", + " )\n", + "Index(['Unnamed: 0', '2020 T€', '2019 T€'], dtype='object')\n", + "MultiIndex([( 'Unnamed: 0_level_0', 'Unnamed: 0_level_1'),\n", + " ('Anschaffungs- und Herstellungskosten', 'Stand am 01.01.2020 €'),\n", + " ('Anschaffungs- und Herstellungskosten', 'Zugang €'),\n", + " ('Anschaffungs- und Herstellungskosten', 'Abgang €'),\n", + " ('Anschaffungs- und Herstellungskosten', 'Umbuchung €'),\n", + " ('Anschaffungs- und Herstellungskosten', 'Stand am 31.12.2020 €')],\n", + " )\n", + "MultiIndex([('Unnamed: 0_level_0', 'Unnamed: 0_level_1'),\n", + " ( 'Abschreibungen', 'Stand am 01.01.2020 €'),\n", + " ( 'Abschreibungen', 'Zugang €'),\n", + " ( 'Abschreibungen', 'außerplanm. AfA'),\n", + " ( 'Abschreibungen', 'Abgang €'),\n", + " ( 'Abschreibungen', 'Umbuchung €'),\n", + " ( 'Abschreibungen', 'Stand am 31.12.2020 €')],\n", + " )\n", + "MultiIndex([('Unnamed: 0_level_0', 'Unnamed: 0_level_1'),\n", + " ( 'Restbuchwerte', 'Stand am 31.12.2020 €'),\n", + " ( 'Restbuchwerte', 'Stand am 31.12.2019 €')],\n", + " )\n", + "Index(['Unnamed: 0', 'Elektrizitätsverteilung', '31.12.2019 in T €',\n", + " 'Gasverteilung', '31.12.2019 in T €.1'],\n", " dtype='object')\n", - "Index(['Bilanz', '31.12.2021 TEUR', 'Vorjahr TEUR', 'Veränderung TEUR'], dtype='object')\n" + "Index(['Unnamed: 0', '€', '31.12.2019 in T €'], dtype='object')\n", + "Index(['Unnamed: 0', 'Elektrizitätsverteilung €', '31.12.2019 in T €',\n", + " 'Gasverteilung €', '31.12.2019 in T €.1'],\n", + " dtype='object')\n", + "Index(['Unnamed: 0', '€', 'Vorjahr in T €'], dtype='object')\n", + "MultiIndex([('Verbindlichkeitenspiegel 2020 Elektrizitätsverteilung', ...),\n", + " ( 'davon mit einer Restlaufzeit', ...),\n", + " ( 'davon mit einer Restlaufzeit', ...),\n", + " ( 'davon mit einer Restlaufzeit', ...),\n", + " ( 'davon mit einer Restlaufzeit', ...)],\n", + " )\n", + "MultiIndex([('Verbindlichkeitenspiegel 2020 Gasverteilung', ...),\n", + " ( 'davon mit einer Restlaufzeit', ...),\n", + " ( 'davon mit einer Restlaufzeit', ...),\n", + " ( 'davon mit einer Restlaufzeit', ...),\n", + " ( 'davon mit einer Restlaufzeit', ...)],\n", + " )\n", + "MultiIndex([('Verbindlichkeitenspiegel 2020 Intelligenter', ...),\n", + " ( 'davon mit einer Restlaufzeit', ...),\n", + " ( 'davon mit einer Restlaufzeit', ...),\n", + " ( 'davon mit einer Restlaufzeit', ...),\n", + " ( 'davon mit einer Restlaufzeit', ...)],\n", + " )\n" ] } ],