Page 1 of 1

Unerwartetes PYSPARK -Filterverhalten

Posted: 23 Feb 2025, 22:52
by Anonymous
Ich möchte die Zeilen herausfiltern, an denen CID (String-Typ) '-' und Merkmal_diff null ist. Die Codes, die ich bereitgestellt habe, filtern die Zeilen heraus, bei denen beide null sind, auch wenn ich ISNull für CID nicht einsehe (wie in der 3. Codezeile). < /P>

Code: Select all

df = df.filter(
~((col('CID') == "-") & (col('CID').isNull()) & col('trait_diff').isNull())
)

df = df.filter(
~((col('CID').isNull()) & col('trait_diff').isNull())
)

df = df.filter(
~((col('CID') == "-") & col('trait_diff').isNull())
)
< /code>
Oben 3 Code filtern Sie dieselben Zeilen, bei denen CID null ist, und MASTE_DIFF ist null, unabhängig davon, ob CID von Null nicht vorhanden ist. Ich habe überprüft, ob es in allen Fällen 3 Zeilen herausfiltert und dort sind beide Null. < /P>
In der ersten kann ich nicht verstehen gleichzeitig. Beim Entfernen des ~, um die 3 gefilterten Zeilen herauszuholen, gibt es nichts zurück. (Um zu überprüfen, welche Zeilen gefiltert werden, habe ich die Excel -Datei exportiert, Datenbleals haben nichts zurückgegeben.) >
df = df.filter(
(col('CID') != "-") | col('trait_diff').isNotNull()
)
< /code>
Kann mir jemand helfen, hier zu verstehen, warum es keine erwarteten Ergebnisse liefert. Idee, warum dies funktioniert (denn wenn CID '-' 'ist und es nicht null ist und wir diesen Zustand nicht einlegen müssen) und nicht andere < /p>
df = df.filter(
~((col('CID') == "-") & col('CID').isNotNull() & col('trait_diff').isNull())
)