Panda - CSV Datei Spalte lesen +1

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
AndreeRo
User
Beiträge: 4
Registriert: Dienstag 2. April 2019, 13:50

Hallo

ich finde keine Lösung zu folgendem Problem

ich habe eine Exceldatei mit 2065 Spalten, über den Header finde ich alle Spalten wunderbar - nur mit dem Datum habe ich das Problem, das es die Spalte mit der Bezeichnung 'von' 4x in der Datei gibt. Natürlich mit unterschiedlichen Inhalt.
Ich brauche nur die dritte Spalte mit den Werten 'von' … (Typ Datum)


ds = pd.read_csv("daten\\meinedatei.txt", sep=";", Header=0,encoding="ISO-8859-1")
print (ds.loc[ :, {'von', 'kurz', 'tage' }])

geht super, nur es ist immer die erste Spalte mit dem Wert 'von'

Die Versuche mit :
print (ds.loc[ :, {'von'[3], 'kurz', 'tage' }]) .. usw. bringen nichts

Ich könnte die Spalte davor finden und dann eine Spalte weiterspringen ..
print (ds.loc[ :, {'spaltevorvon'+1, 'kurz', 'tage' }]) .. auch nichts


Wäre froh über eine Lösung/Idee :-)
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

einfach alle Spalten mit gleichem Namen unbenennen:

Code: Alles auswählen

columns = []
count = 1
for column in ds.columns:
    if column == 'von':
        column = f'von_{count}'
        count += 1
    columns.append(column)
ds.columns = columns
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Benutzeravatar
__blackjack__
User
Beiträge: 13077
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Alternative mit `itertools.count()`:

Code: Alles auswählen

import itertools

counter = itertools.count(1)
ds.columns = [
    (f'von_{next(counter)}' if column == 'von' else column)
    for column in ds.columns
]
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
heyJo
User
Beiträge: 23
Registriert: Mittwoch 24. Januar 2018, 20:49
Wohnort: Köln

Hallo,
hast du es mal mit

Code: Alles auswählen

ds = pd.read_csv("daten\\meinedatei.txt", sep=";", Header=0,encoding="ISO-8859-1",usecols=[0,1,2])
probiert?

Gib im listenähnlichen Format deine Spaltennummer an. Beginne die Zählung bei "0".

Gruß
Jo
Antworten