gerade - ungerade Zahlen

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
Anfänger!
User
Beiträge: 14
Registriert: Dienstag 30. April 2019, 08:37

Hallo zusammen.

Ich habe eine csv Liste mit den Spalten: Name, Vorname, Alter, Wohnort, Geschlecht
habe die Datei wie folgt geöffnet:

Frage:
1. Würdet ihr die Datei aus so öffnen? Weil Titelzeilen (Name, Vorname...) 2x ausgegeben wird.
2. Ich soll all die Zeilen ausgeben in denen der Alter (in der Spalte Alter) eine runde Zahl entspricht! Wenn es ungerade oder ein leeres Feld in der Spalte Alter ist, dann soll die ganze Zeile nicht ausgegeben werden.
Bitte Code gerne in pandas und roh Python falls es geht. Ansonsten nur in pandas.
Herzlichen Dank und beste Grüsse!

Code: Alles auswählen

import pandas as pd
df = pd.read_csv('Aufgabe2.csv', delimiter=';',
names = ['Name', 'Vorname', 'Alter', 'Wohnort', 'Geschlecht',])
print(df)

      Name  Vorname  Alter    Wohnort  Geschlecht
0     Name  Vorname  Alter    Wohnort  Geschlecht
1      NaN    André     55     Zürich           M
2   Müller      NaN     20     Genève           F
3   Bäcker    Jüdit    NaN       Äsch           F
4   Müster     Fäbu     29        NaN           M
5   Strähl     Ändu     48  Ätigkofen         NaN
6      NaN    André     55     Zürich           M
7   Müller      NaN     20     Genève           F
8   Bäcker    Jüdit    NaN       Äsch           F
9   Müster     Fäbu     29        NaN           M
10  Strähl     Ändu     48  Ätigkofen         NaN
bb1898
User
Beiträge: 216
Registriert: Mittwoch 12. Juli 2006, 14:28

Leider kenne ich mich mit pandas überhaupt nicht aus. Trotzdem habe ich eine Vermutung zu der doppelten Überschriftszeile: wenn die Spaltenüberschriften so auch in der Datei selber stehen, dann lass den "names"-Parameter probehalber einfach mal weg:

Code: Alles auswählen

df = pd.read_csv('Aufgabe2.csv', delimiter=';')
So würde das jedenfalls mit dem csv-Modul gemacht.

Mir wird aus Deiner Beschreibung, zusammen mit der Überschrift, nicht klar, welche Zeilen denn nun ausgegeben werden sollen: die mit geradem Alter (das wären nur 20 und 48, beide mehrfach) oder die mit einer "runden Zahl" - das wäre noch zu definieren: teilbar durch 10 (also nur die 20)? Teilbar durch 5 (dann wäre auch die 55 dabei)?
Benutzeravatar
ThomasL
User
Beiträge: 1378
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Wenn man Fragen zu einer Methode hat, dann schaut man sich vielleicht als erstes die Dokumentation dazu an?
https://pandas.pydata.org/pandas-docs/s ... d_csv.html

Sich den Parameter header= anzuschauen wäre da mein Tipp.

Das Selektieren klappt dann z.B. so:

Code: Alles auswählen

df[(df["Alter"] % 2) == 0]
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
Anfänger!
User
Beiträge: 14
Registriert: Dienstag 30. April 2019, 08:37

@ThomasL: es funktioniert, siehe meine Ausgabe :D Wäre gerne so ein Profi wie Du! 1000 Dank!

Code: Alles auswählen

Name	Vorname	Alter	Wohnort	Geschlecht
1	Müller	NaN	20.0	Genève	F
4	Strähl	Ändu	48.0	Ätigkofen	NaN
6	Müller	NaN	20.0	Genève	F
9	Strähl	Ändu	48.0	Ätigkofen	NaN
Antworten