Über den Index gemerget, muss nur noch die zeite Hostnamenspalte raus

This commit is contained in:
Sven Riwoldt
2024-10-29 15:21:53 +01:00
parent 3c192d6ddb
commit b66b40cec5

View File

@@ -42,15 +42,13 @@ class MainUI(QDialog): # erbt von QDialog
if self.filename:
self.path = Path(self.filename)
self.collect_allgemein()
self.collect_cmdb_daten_gg()
self.collect_cmdb_daten_erw()
def collect_cmdb_daten_gg(self):
# Einlesen der Sheets allgemein
self.df_vte = pd.read_excel(self.filename, header=7, na_filter=False, sheet_name='VTE-Input',
usecols=['Hostname', 'Gruppierung', 'CONFIG-ID', 'CMDB Status'], engine='pyxlsb')
self.df_cmdb = pd.read_excel(self.filename, header=2, sheet_name="CMDB", engine='pyxlsb')
# Nach relevanten Spalten filtern Grundgeraete
# Sheet VTE
@@ -58,7 +56,10 @@ class MainUI(QDialog): # erbt von QDialog
# Sheet CMDB
self.df_cmdb_gg = self.df_cmdb[self.df_cmdb['Filter'] == 'Grundgerät']
# Führende Leerzeichen in allen Spalten entfernen
self.df_vte_gg = self.df_vte_gg.apply(lambda x: x.str.lstrip() if x.dtype == "object" else x)
self.df_cmdb_gg = self.df_cmdb_gg.apply(lambda x: x.str.lstrip() if x.dtype == "object" else x)
# Teil Grundgeräte
self.df_cmdb_gg = self.df_cmdb_gg.drop(
columns=['WV-Start', 'WV-Ende', 'CMDB-Status', 'Aufgabe Schritt', 'Filter', 'Waermeabgabe [BTU/h]',
@@ -99,7 +100,8 @@ class MainUI(QDialog): # erbt von QDialog
print("Spaltenheader mit Sonderzeichen:", columns_with_special_chars)
# Führende Leerzeichen in allen Spalten entfernen
self.dfb_gg = self.dfb_gg.apply(lambda x: x.str.lstrip() if x.dtype == "object" else x)
# Nach oben velegt
#self.dfb_gg = self.dfb_gg.apply(lambda x: x.str.lstrip() if x.dtype == "object" else x)
# Alle Floats in Strings umwandeln
self.dfb_gg = self.dfb_gg.applymap(lambda x: str(x) if isinstance(x, float) else x)
@@ -381,6 +383,11 @@ class MainUI(QDialog): # erbt von QDialog
############## Erweiterung ################################################################################
# Kopieren
self.df_vte_erw = self.df_vte
self.df_cmdb_erw = self.df_cmdb
# Führende Leerzeichen in allen Spalten entfernen
self.df_vte_erw = self.df_vte_erw.apply(lambda x: x.str.lstrip() if x.dtype == "object" else x)
self.df_cmdb_erw = self.df_cmdb_erw.apply(lambda x: x.str.lstrip() if x.dtype == "object" else x)
# Auffüllen der Spalte Hostname
self.df_vte_erw['Hostname']= self.df_vte_erw['Hostname'].replace('', np.nan)
@@ -390,29 +397,50 @@ class MainUI(QDialog): # erbt von QDialog
# Nach relevanten Spalten filtern Erweiterung
self.df_vte_erw = self.df_vte_erw[self.df_vte_erw['Gruppierung'] == 'Erweiterung']
print("Self_ERW: ",self.df_vte_erw['Hostname'])
self.df_vte_erw = self.df_vte_erw.reset_index(drop=True)
self.df_cmdb_erw = self.df_cmdb
# Auf reellen Zeilenindex setzen, ab 0
#self.df_vte_erw = self.df_vte_erw.reset_index(drop=False)
#debug
#self.df_vte_erw.to_csv("VTE_ERW.csv", index=None, header=True,encoding='utf-8')
# Füllen der leeren Zellen mit NaN, sonst git es Probleme bei ffill, so konnte ich fillna nutzen
self.df_cmdb_erw['Hostname']= self.df_cmdb_erw['Hostname'].replace('', np.nan)
self.df_cmdb_erw['Hostname'] = self.df_cmdb_erw['Hostname'].fillna(method='ffill')
self.df_cmdb_erw = self.df_cmdb_erw[self.df_cmdb_erw['Filter'] == 'Erweiterung']
self.df_cmdb_erw = self.df_cmdb_erw.reset_index(drop=True)
self.df_cmdb_erw = self.df_cmdb_erw.drop(
columns=['WV-Start', 'WV-Ende', 'CMDB-Status', 'Aufgabe Schritt', 'Filter', 'Waermeabgabe [BTU/h]',
'kalk. Strom [A]'])
# Zusammensetzen der Tabellen
#self.dfb_erw = self.df_vte_erw.merge(self.df_cmdb_erw)
self.dfb_erw = pd.concat([self.df_cmdb_erw, self.df_vte_erw], ignore_index=False)
# Auf reellen Zeilenindex setzen, ab 0
#self.df_cmdb_erw = self.df_cmdb_erw.reset_index(drop=False)
# debug
#self.df_cmdb_erw.to_csv("CMDB_ERW.csv", index=None, header=True, encoding='utf-8')
# Zusammensetzen der Tabellen mit über Index, normal brachte mehr als doppelt soviele Zeilen
#self.dfb_erw = self.df_vte_erw.merge(self.df_cmdb_erw, on=['Index'], how='left')
self.dfb_erw = self.df_vte_erw.merge(self.df_cmdb_erw,left_index = True, right_index = True, how = 'inner')
#self.dfb_erw = pd.concat([self.df_vte_erw, self.df_cmdb_erw], ignore_index=True)
#self.dfb_erw = (pd.concat([self.df_cmdb_erw, self.df_vte_erw])
# .sort_index(kind='stable')
# .reset_index(drop=True)
# )
# Bereinigen der Gesamttabelle, z.Zt nur SFPs gefiltert.
# Wenn Netzteilbezeichnung vorhanden werde ich dies auch einbauen, genau wie jedes andere Zubehör auch
search = r'SFP'
self.dfb_erw = self.dfb_erw[self.dfb_erw['Modell'].str.contains(search, regex=True, na=False)]
ic(self.dfb_erw)
@@ -437,6 +465,13 @@ class MainUI(QDialog): # erbt von QDialog
print("Datei wurde gespeichert:", self.savefilename)
def collect_allgemein(self):
self.df_vte = pd.read_excel(self.filename, header=7, na_filter=False, sheet_name='VTE-Input',
usecols=['Hostname', 'Gruppierung', 'CONFIG-ID', 'CMDB Status'], engine='pyxlsb')
self.df_cmdb = pd.read_excel(self.filename, header=2, sheet_name="CMDB", engine='pyxlsb')
if __name__ == "__main__":
app = QApplication(sys.argv)
ui = MainUI()