diff --git a/CMDB2CSV_Aufbaumaster.py b/CMDB2CSV_Aufbaumaster.py index eccda234..d8875e6e 100755 --- a/CMDB2CSV_Aufbaumaster.py +++ b/CMDB2CSV_Aufbaumaster.py @@ -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()