Unter der Annahme, dass der Datenrahmen vollständig vom Typ numerisch ist:
Sie versuchen können:
>>> df = df.loc[:, df.var() == 0.0]
die entfernen konstante Spalten (d Varianz = 0.).
Wenn der Datenrahmen des Typs sowohl numerische als auch Objekt, versuchen Sie sollten dann:
>>> enum_df = df.select_dtypes(include=['object'])
>>> num_df = df.select_dtypes(exclude=['object'])
>>> num_df = num_df.loc[:, num_df.var() == 0.0]
>>> df = pd.concat([num_df, enum_df], axis=1)
die konstante Spalten von nur numerischen Typ sinkt.
Wenn Sie wollen auch konstant Enum Spalten ignorieren/löschen, sollten Sie versuchen:
>>> enum_df = df.select_dtypes(include=['object'])
>>> num_df = df.select_dtypes(exclude=['object'])
>>> enum_df = enum_df.loc[:, [True if y !=1 else False for y in [len(np.unique(x, return_counts=True)[-1]) for x in enum_df.T.as_matrix()]]]
>>> num_df = num_df.loc[:, num_df.var() == 0.0]
>>> df = pd.concat([num_df, enum_df], axis=1)
Aargh zu: '<>'. –
@AndyHayden Pascal Gewohnheiten sterben schwer. Ich habe es geändert. – chthonicdaemon
+1 danke für die Änderung. Dies schließt die Any-Schaltung kurz, nachdem es bereits den! = Vergleich für jedes Element durchgeführt hat, so dass die Lösung von DSM wahrscheinlich effizienter sein wird ... frage mich, ob es eine bessere Kurzschlusslösung gibt. –