Unerwartetes PYSPARK -Filterverhalten

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Unerwartetes PYSPARK -Filterverhalten

by Anonymous » 23 Feb 2025, 22:52

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())
)

Top