2016-04-17 3 views
1

Ich muss auf einer Teilmenge meiner Pandas.DataFrame auf Vollständigkeit überprüfen. Zur Zeit mache ich das:Verwenden Sie Dropna auf Teilmenge für die Aufräumung

special = df[df.kind=='special'] 
others = df[df.kind!='special'] 

special = special.dropna(how='any') 

all = pd.concat([special, others]) 

Ich frage mich, ob ich nicht etwas von dem mächtigen Pandas API fehlen, die in einer Zeile macht dies möglich?

Antwort

1

Ich habe keinen Zugang zu Pandas, von wo ich schreibe, aber pd.DataFrame.isnull() überprüft, ob Dinge null sind, und pd.DataFrame.any() kann Bedingungen nach Zeile überprüfen.

Wenn Sie also

(df.kind != 'special') | ~df.isnull().any(axis=1) 

tun sollte dies die Zeilen geben Sie behalten möchten. Sie können einfach die normale Indizierung für diesen Ausdruck verwenden. Es wäre interessant zu sehen, ob dies alles beschleunigt (es prüft die Dinge auf mehr Zeilen als Ihre Lösung, aber könnte kleinere DataFrames erstellen).

+0

Ich glaube nicht, dass Ihre Antwort das gleiche wie meins ist. Ich lasse keine unvollständigen Daten für nicht spezielle Arten fallen. Ich denke, dein ist es. –

+0

Oh, es ist eine Mischung aus, ob der Tropfen auf die Specials oder nicht ist, nicht wahr? Vielen Dank. Bitte schau, ob es jetzt OK ist. –

+0

Das könnte es sein, danke! Probieren Sie es morgen aus. Ich denke, ich bin nicht dazu gekommen, weil ich nicht daran gewöhnt bin, mit OR-Filtern zu denken :) –

Verwandte Themen