Ich habe zwei booleschen Spalten A und B in einem Pandas-Datenfeld, jedes mit fehlenden Daten (dargestellt durch NaN). Was ich will, ist eine UND-Operation für die beiden Spalten, aber ich möchte, dass die resultierende boolesche Spalte NaN ist, wenn eine der ursprünglichen Spalten NaN ist. Ich habe die folgende Tabelle:Pflegen Sie NaN-Werte in Pandas booleschen Vergleich
A B
0 True True
1 True False
2 False True
3 True NaN
4 NaN NaN
5 NaN False
Nun, wenn ich df.A & df.B
will ich:
0 True
1 False
2 False
3 NaN
4 NaN
5 False
dtype: bool
sondern ich:
0 True
1 False
2 False
3 True
4 True
5 False
dtype: bool
Dieses Verhalten steht im Einklang mit np.bool(np.nan) & np.bool(False)
und seinen Permutationen, aber was ich wirklich will, ist eine Spalte, die mir mit Sicherheit sagt, ob jede Zeile für beide wahr ist oder ob sie für beide nicht wahr sein kann. Wenn ich weiß, dass es für beide wahr ist, dann sollte das Ergebnis wahr sein, wenn ich weiß, dass es für mindestens eins falsch ist, dann sollte es falsch sein, und sonst brauche ich NaN, um zu zeigen, dass das Datum fehlt.
Gibt es einen Weg, dies zu erreichen?
Letzter Wert in den gewünschten Ausgang ist nicht 'NaN'? – jezrael
Verwenden Sie 'numpy.logical_and'. – Goyo
Nein, solange ich weiß, dass mindestens einer der Einträge False ist, weiß ich, dass sie nicht beide wahr sind. –