Ich habe eine Deedle
DataFrame
des Typs Frame<int,string>
, die einige fehlende Werte enthält. Ich möchte die fehlenden Werte in leere Strings ""
konvertieren. Ich habe versucht, die valueOr
Funktion zu verwenden, aber das hat nicht geholfen. Gibt es eine Möglichkeit, dies zu tun?Wie konvertiere ich fehlende Werte in Strings?
Hier ist meine DataFrame
:
let s1 = Series.ofOptionalObservations [ 1 => Some("A"); 2 => None ]
let s2 = Series.ofOptionalObservations [ 1 => Some("B"); 2 => Some("C") ]
let df = Frame.ofColumns ["A", s1; "BC", s2]
Typing df;;
in FSI
liefert einige Informationen einschließlich
ColumnTypes = seq [System.String; System.String];
. Die Werte von df
sind also vom Typ string
und nicht string option
. valueOr
Dies ist die Funktion:
let valueOr (someDefault: 'a) (xo: 'a option) : 'a =
match xo with
| Some v -> v
| None -> someDefault
I definiert eine Hilfsfunktion emptyFoo
als:
let emptyFoo = valueOr ""
Die Signatur emptyFoo
string option -> string
ist. Das bedeutet emptyFoo
nicht an den Compiler im folgenden Befehl akzeptabel sein sollten:
let df' = Frame.mapValues emptyFoo df
Dies ist so, weil die Werte von df
Typ sind und nicht string
string option
.
Immer noch beschwert sich der Compiler nicht und der Code wird ausgeführt. df'
hat jedoch immer noch einen fehlenden Wert.
Gibt es eine Möglichkeit, den fehlenden Wert in die leere Zeichenfolge zu transformieren?
Danke. Ich habe 'fillMissingWith' für 'float'-Werte verwendet, einige mentale Hindernisse hinderten mich daran, darüber nachzudenken, sie für Strings zu verwenden. – Soldalma