From e957b821a0538d4fce4715b41911b1fd011e133b Mon Sep 17 00:00:00 2001 From: patha Date: Sun, 1 Dec 2024 17:49:02 +0100 Subject: [PATCH] Erstellung --- ghostfolio_conversion.py | 118 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 ghostfolio_conversion.py diff --git a/ghostfolio_conversion.py b/ghostfolio_conversion.py new file mode 100644 index 0000000..11f7b11 --- /dev/null +++ b/ghostfolio_conversion.py @@ -0,0 +1,118 @@ +# Dieses Skript liest die von Easybank exportierten .csv-Dateien ein und konvertiert sie zu Ghostfolio-kompatiblen .csv-Dateien + +import pandas +import csv + +# Datei einlesen +file = input('Name of Input-File (without .csv): ') + ".csv" + +# Header und Datenzeile für Ghostfolio.csv anlegen +header = ['Date','Code','DataSource','Currency','Price','Quantity','Action','Fee','accountId'] +data = [None,None,'YAHOO','EUR',None,'1','dividend','0.00','3054673f-165a-4302-b340-8133a1667e80'] + +# Bankauszug (ohne Header) in Dataframe schreiben +raw_df = pandas.read_csv(file, sep=';', header=None) + +# Nichtbenötigte Spalten entfernen +df = raw_df.drop(raw_df.columns[[0,3,5]], axis=1) + +# Header für Importfile schreiben +with open('ghostfolio_import.csv', 'a', encoding='UTF8', newline='') as f: + writer = csv.writer(f) + writer.writerow(header) + +# Durch alle Zeilen der Ausgangsdatei durchiterieren und dann Zeile passend in Importfile schreiben +for i in range(df.shape[0]): + # Aktiencode feststellen + # Altlasten + if 'TELENOR' in str((df.iloc[i, 0])): + data[1] = "TEQ.F" + elif 'WOODSIDE' in str((df.iloc[i, 0])): + data[1] = "WOP0.F" + elif 'SHELL' in str((df.iloc[i, 0])): + data[1] = "R6C0.F" + elif 'HSBC' in str((df.iloc[i, 0])): + data[1] = "HBC2.F" + elif 'CIBC' in str((df.iloc[i, 0])): + data[1] = "CAI.F" + elif 'SCOTIA' in str((df.iloc[i, 0])): + data[1] = "BKN.F" + elif 'BARRATT' in str((df.iloc[i, 0])): + data[1] = "3BA.F" + elif 'WOODSIDE' in str((df.iloc[i, 0])): + data[1] = "WOP0.F" + elif 'CNOOC' in str((df.iloc[i, 0])): + data[1] = "NC2B.F" + elif 'VOEST' in str((df.iloc[i, 0])): + data[1] = "VAS.F" + elif 'STARBUCKS' in str((df.iloc[i, 0])): + data[1] = "SRB.F" + elif 'SOUTH' in str((df.iloc[i, 0])): + data[1] = "32Z.F" + elif 'PHILIPS' in str((df.iloc[i, 0])): + data[1] = "PHIA.F" + # Portfolio + elif 'ABBVIE' in str((df.iloc[i, 0])): + data[1] = "4AB.F" + elif 'RTX' in str((df.iloc[i, 0])): + data[1] = "5UR.F" + elif 'MERCK' in str((df.iloc[i, 0])): + data[1] = "6MK.F" + elif 'ORGANON' in str((df.iloc[i, 0])): + data[1] = "7XP.F" + elif 'AIRBUS' in str((df.iloc[i, 0])): + data[1] = "AIR.F" + elif 'BHP' in str((df.iloc[i, 0])): + data[1] = "BHP1.F" + elif 'CATERPILLAR' in str((df.iloc[i, 0])): + data[1] = "CAT1.F" + elif 'COCA-COLA' in str((df.iloc[i, 0])): + data[1] = "CCC3.F" + elif 'CISCO' in str((df.iloc[i, 0])): + data[1] = "CIS.F" + elif 'DEUTSCHE POST' in str((df.iloc[i, 0])): + data[1] = "DHL.F" + elif 'JOHNSON + JOHNSON' in str((df.iloc[i, 0])): + data[1] = "JNJ.F" + elif 'KRAFT HEINZ' in str((df.iloc[i, 0])): + data[1] = "KHNZ.F" + elif 'LEGAL' in str((df.iloc[i, 0])): + data[1] = "LGI.F" + elif 'LOCKHEED MARTIN' in str((df.iloc[i, 0])): + data[1] = "LOM.F" + elif 'MERCEDES-BENZ' in str((df.iloc[i, 0])): + data[1] = "MBG.F" + elif 'MCDONALDS' in str((df.iloc[i, 0])): + data[1] = "MDO.F" + elif '3M' in str((df.iloc[i, 0])): + data[1] = "MMM.F" + elif 'PFIZER' in str((df.iloc[i, 0])): + data[1] = "PFE.F" + elif 'RHEINMETALL' in str((df.iloc[i, 0])): + data[1] = "RHM.F" + elif 'DISTRI' in str((df.iloc[i, 0])): + data[1] = "RYE.F" + elif 'ROYAL' in str((df.iloc[i, 0])): + data[1] = "RYE.F" + elif 'SIEMENS' in str((df.iloc[i, 0])): + data[1] = "SIE.F" + elif 'AT + T' in str((df.iloc[i, 0])): + data[1] = "SOBA.F" + elif 'UNILEVER' in str((df.iloc[i, 0])): + data[1] = "UNVA.F" + elif 'BANK OF CHINA' in str((df.iloc[i, 0])): + data[1] = "W8V.F" + else: + data[1] = "MISSING" + + # Datum feststellen + data[0] = str((df.iloc[i, 1])) + #Dividende feststellen + dividend = str(df.iloc[i, 2]).replace('+', '').replace(',', '.') + data[4] = float(dividend) + + # Daten-Zeile in Import-File schreiben + with open('ghostfolio_import.csv', 'a', encoding='UTF8', newline='') as f: + writer = csv.writer(f) + writer.writerow(data) +