clipboard to Panda

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
SautaRoc
User
Beiträge: 48
Registriert: Donnerstag 20. September 2018, 13:18

Hallo,

ich lade aus einem Handelsprogramm Transaktionsdaten in das Clipboard um sie später in Python verarbeiten zu können:

Code: Alles auswählen

import pyperclip

rohdaten = pyperclip.paste()
rohdaten1 = (rohdaten.replace('\t', ';'))
rohdaten2 = (rohdaten1.replace(' ', ''))
print(rohdaten2)


Das Ergebnis schaut dann so aus:

Code: Alles auswählen

26Nov18;09:18:38:151;S;1;11331.0
26Nov18;09:18:21:806;B;1;11329.5
26Nov18;09:16:53:787;S;1;11328.5
26Nov18;09:16:28:712;S;1;11333.5
26Nov18;09:16:15:499;B;1;11328.5
26Nov18;09:15:04:219;B;1;11330.5
26Nov18;09:09:19:638;S;1;11320.0
26Nov18;09:09:15:865;S;1;11315.5
26Nov18;09:08:07:054;B;1;11308.0
26Nov18;09:07:35:972;B;1;11313.0
26Nov18;09:05:43:336;S;1;11311.5
26Nov18;09:05:36:819;S;1;11310.0
26Nov18;09:05:07:702;B;1;11305.5
26Nov18;09:04:17:227;B;1;11303.5
26Nov18;08:32:46:965;B;1;11272.0
26Nov18;08:32:11:045;S;1;11271.5

Die Ursprungsidee war, die Daten so umzuformen, dass sie einer .csv entsprechen. ich wollte dann den String als .csv speichern, um ihn dann später über pd.read_csv in einen Dataframe zu packen und meine Auswertung zu machen.

Code: Alles auswählen

f = open('test.csv', 'wb')
f.write(rohdaten2)
f.close

Das funktioniert leider nicht. Kann mir jemand auf die Sprünge helfen wie man so ein Problem angeht? Im Grunde will ich die Datan nur in einem DataFrame haben, der Umweg über die .csv war nur mein erster Ansatz. Ich benötige nicht unbedingt eine .csv


Danke.
Sirius3
User
Beiträge: 17712
Registriert: Sonntag 21. Oktober 2012, 17:20

close sollte man auch aufrufen.

Aber Du kannst Dir das alles auch sparen:

Code: Alles auswählen

data = pandas.read_clipboard(delimiter='\t')
SautaRoc
User
Beiträge: 48
Registriert: Donnerstag 20. September 2018, 13:18

vielen Dank, das spart mir Stunden an suchen und probieren! Es funktioniert, nur wird die erste Zeile des Datensatzes als Header verwendet.
Das konnte ich aber lösen, indem ich die Header ergänze:

Code: Alles auswählen

import pandas as pd
data = pd.read_clipboard(delimiter='\t')
data.columns = ['Datum', 'Zeit', 'B/S', 'Menge', 'Preis']
print(data)
print(data.dtypes)
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

read_clipboard() hat noch die selben Parameter wie read_table()
sollte auch so funktionieren (auf die Schnelle nicht getestet)

Code: Alles auswählen

data = pd.read_clipboard(delimiter='\t', header=None, index_col=['Datum', 'Zeit', 'B/S', 'Menge', 'Preis'])
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
Antworten