Seite 1 von 1

Zeile aus Pandas-Dict auslesen

Verfasst: Mittwoch 11. Dezember 2019, 13:11
von DMD-OS
huhu
ich bräuchte mal hilfe.
ich versuche aus folgendem code:

Code: Alles auswählen

import pandas as pd

input_file = "C:\\Users\\colling\\Desktop\\DM-Dateiimport\\Dateiimport - Vollversion\\input\\Auftragsstellen.xlsx"

process_dict = {}
process_name = "Niederlassungen.xlsx"
sheet = 'Tabelle4'
xls = pd.ExcelFile(input_file)
if process_name not in process_dict:
    process_dict[process_name] = {}
for sheet_name in xls.sheet_names:
    df = pd.DataFrame(pd.read_excel(input_file, sheet_name=sheet_name))
    process_dict[process_name][sheet_name] = xls.parse(sheet_name)
for key, value in process_dict.items():
    print(key)
    for tabelle, zeilen  in value.items():
        if tabelle== sheet:
            print(tabelle)
            print(zeilen )


HIER DIE AUSGABE DES PRINT-BEFEHLS:

Auftragsstellen.xlsx
Tabelle3
  Spalte11:TEXT Spalte12:TEXT       ...        Spalte14:TEXT Spalte15:INTEGER
0             k             l       ...                    n        123456789

[1 rows x 5 columns]
Tabelle4
  Spalte16:TEXT Spalte17:TEXT
0             p             q
1             r             s
2             T             u
3             v             w
4             x             y
5             z            aa
---
und der ausgabe:

Code: Alles auswählen

Auftragsstellen.xlsx Tabelle4 3
eine bestimmte Zeile auszulesen. In diesem Fall aus Tabelle4 die dritte Zeile.
Kann mir jemand helfen, wie man das macht?

Re: Zeile aus Pandas-Dict auslesen

Verfasst: Mittwoch 11. Dezember 2019, 14:27
von __blackjack__
@DMD-OS: Grundatenstrukturen gehören nicht in Namen.

Das was Du `sheet` nennst ist das gar nicht sondern der Name von einem. `input_file` ist auch nicht das was es behauptet, eine Datei, sondern ein Datei*name*.

`df` wird definiert, aber nirgends verwendet.

`key` und `value` sind als Namen hier viel zu generisch.

Wenn man in einer ``for``-Schleife über die Schlüssel/Wert-Paare eines Wörterbuchs iteriert und in der Schleife dann mit einem ``if`` *einen* bestimmten Schlüssel filtert für den man dann etwas macht, sollte man sich dringend noch mal die Grundlagen zu Wörterbüchern anschauen. Die sind ja gerade dazu da, dass man das nicht so umständlich und ineffizient machen muss.

Du bastelst Dir da Funktionalität die `pandas.read_excel()` bereits bietet, nämlich das einlesen einer Exceldatei als Wörterbuch das Namen auf Dataframes abbildet.

Dein Code aufgeräumt, aber ungetestet:

Code: Alles auswählen

#!/usr/bin/env python3
from pathlib import Path

import pandas as pd


def main():
    input_filename = (
        Path("C:")
        / "Users"
        / "colling"
        / "Desktop"
        / "DM-Dateiimport"
        / "Dateiimport - Vollversion"
        / "input"
        / "Auftragsstellen.xlsx"
    )

    process_name = "Niederlassungen.xlsx"
    wanted_sheet_name = "Tabelle4"
    process_name_to_sheets = {}

    process_name_to_sheets[process_name] = pd.read_excel(
        input_filename, sheet=None
    )

    for process_name, sheet_name_to_sheet in process_name_to_sheets.items():
        print(process_name)
        sheet = sheet_name_to_sheet.get(wanted_sheet_name)
        if sheet:
            print(wanted_sheet_name)
            print(sheet)


if __name__ == "__main__":
    main()
Und die Frage wie man eine Zeile aus einem `pandas.DataFrame` bekommt hat genau gar nichts mit dem gezeigten Code zu tun. Und ist so grundlegend, das ich da jetzt einfach mal RTFM sage. Das steht alles in der Pandas-Dokumentation.

Re: Zeile aus Pandas-Dict auslesen

Verfasst: Mittwoch 11. Dezember 2019, 15:58
von DMD-OS
was muß ich da denn eingeben, damit ich da was finde???

Re: Zeile aus Pandas-Dict auslesen

Verfasst: Mittwoch 11. Dezember 2019, 16:01
von __deets__
Wie, was musst du eingeben? "python pandas documentation" oder was genau ist die Frage?