Python CSV Lesen und Maßeinheiten entfernen

Hallo Community,

habe ein kleines Problem möchte Maßeinheiten aus der CSV raus bekommen. Aktuelles Skript:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import pandas

# Einlesen der Datei und Seperieren
df = pandas.read_csv('Messwerte_Blutdruck.csv',
                     sep='[;-]',
                     engine='python',
                     encoding='utf-8-sig')

# Entfernt bestimmte Spalten von der Liste für die Ausgabe
del df['Anmerkungen']
del df['Aktivität']
del df['Stimmung']

# Überprüfung der Funktion oben als ausgabe, wird, wenn alles klappt, rausgenommen
print(df)

# Schreibt neue CSV ohne Index
df.to_csv('Blutdruck.csv', index=False)

Ließt und Schreibt auch super, mein Problem liegt an der CSV, die Messwertbezeichnung „mmHg“ und „bpm“ sollen neben den anderen Spalten auch verschwinden. Ausgabe sieht aktuellso aus:

Datum , Uhrzeit,Systole,Diastole,Puls
21.03.2018 , 16:46,000 mmHg,000 mmHg,000 bpm
21.03.2018 , 16:48,000 mmHg,000 mmHg,000 bpm
21.03.2018 , 16:49,000 mmHg,000 mmHg,000 bpm
21.03.2018 , 17:41,000 mmHg,000 mmHg,000 bpm

Wenn mir jemand einen Tipp geben könnte, wäre echt genial. brauche den Script um csv dateien in ein Format zu bekommen um das in die Access Datenbank von einem Arzt zu Importieren, Backend Access steht schon geht nur noch um die Maßeinheiten :wink:

Besten Gruß

Hab’ jetzt auch nur kurz eine Websuche gemacht, aber einige relevante Fragen: Was sind die Strings eigentlich? Sollen das Strings bleiben (also 000 … der Typ ist übrigens schon tot, aber das nur nebenbei :wink: ). Oder sind das ganze Zahlen oder Kommazahlen?

Mit dem hier

df['Systole'] = df['Systole'].apply(lambda x: float(x.replace('mmHg', '')))
df['Diastole'] = df['Diastole'].apply(lambda x: float(x.replace('mmHg', '')))
df['Puls'] = df['Puls'].apply(lambda x: int(x.replace('bpm', '')))

kann man die störenden Strings weglassen, und die Ergebnisse in Zahlen umwandeln (zwei mal float und einmal int - das ist nur geraten). Wenn es Strings bleiben sollen, kann man noch

x.replace(‚mmHg‘, ‚‘).strip()

machen um ggf. Leerzeichen zu entfernen.

Danke dir Marco13, kenne die Scriptsprache nicht und wußte jetzt nicht wie ich direkt auf die Daten zugreife.

Die 000 sind die Stellen der Zahlen, bpm ist der Puls, mmHg sind die Millimeter Quecksilbersäule, alte Blutdruckmessgeräte :wink:

Sprich gehe auf Datensatz df und dann die Spalte wo er das entfernen soll.

Besten Gruß

Was die Spaltennamen bedeuten, wußte ich, aber das ist nicht relevant (wie so vieles, was ich weiß :roll_eyes: ).

Es ging darum, dass in so einer Tabllenzelle stehen könnte
"000 " - Ein String
"000" - Ein ge-strip-ter String
0 - Ein int
0.0 - Ein float

Aber vielleicht ist das für dich gerade nicht sooo relevant…

Hi,
nein sind normale Ganzzahlen, float sind ja Gleitkomma zahlen,
diese benötige ich dafür nicht. Deshalb sind alle 3 auf int umgestellt :wink:

Gruß