[FIXED] Python-Pandas – df.shape für einen resultierenden Datenrahmen, der keine Spalten, sondern einen Index hat

Ausgabe

Ich habe einen Datenrahmen, der aus einigen Manipulationen von 2 anderen dfs resultiert

Hinweis: PKEY_ID ist der benutzerdefinierte Index

Geben Sie hier die Bildbeschreibung ein

Jetzt möchte ich einen anderen resultierenden Datenrahmen, der nur die Spalten mit Nicht-Null-Werten enthalten würde. Unten ist mein Code

diff_col_lst = 			
.isna().all()] err_df = df[diff_col_lst]

Ausgabe

Geben Sie hier die Bildbeschreibung ein

Jetzt ist der Datenrahmen tatsächlich leer, da es überhaupt keine Spalten gibt, aber beim Überprüfen der df.shape

err_df.shape

Geben Sie hier die Bildbeschreibung ein

Q-1: Obwohl der Datenrahmen leer ist, sagt er, dass es 10 Zeilen gibt. So erhalten Sie die Form als (0,0), wenn df leer ist, ohne explizit df.empty zu überprüfen und Formen zu manipulieren.

F -2: Können wir den folgenden Code noch abstrakter machen?

    diff_col_lst = 			
.isna().all()] err_df = df[diff_col_lst]

Lösung

Zuerst für Q2:

Du könntest benutzen

   err_df = df.loc[:, df.any()]

If you look at documentation of any, it says Return whether any element is True, potentially over an axis. The default axis is 0 or index. So it looks at each column from top to bottom along the index and see if there is any non-null value and if found, it returns True along that axis. We don’t need to supply axis=0, because its the default value. It will return all such columns which have at least one non-null value.

Now you use .loc to access the columns returned by df.any() and the : part says that I need all indices.

Q1. IIUC, you are filtering by columns which have a non-null value. Then if you need to check if any columns are there are not and you want to check only using shape then you can shape on columns like

   err_df.columns.shape

which should give (0,) in this case.

Oder Sie könnten verwenden, sizewas die Anzahl der Elemente angibt. In diesem Fall wird 0 für zurückgegeben

err_df.size


Beantwortet von –
SomeDude


Antwort geprüft von –
David Marino (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like