Zeile aus Pandas-Dict auslesen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
DMD-OS
User
Beiträge: 165
Registriert: Freitag 28. Dezember 2018, 13:52

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?
Benutzeravatar
__blackjack__
User
Beiträge: 14052
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
DMD-OS
User
Beiträge: 165
Registriert: Freitag 28. Dezember 2018, 13:52

was muß ich da denn eingeben, damit ich da was finde???
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wie, was musst du eingeben? "python pandas documentation" oder was genau ist die Frage?
Antworten