2017-09-16 10 views
3

Frame<int,string>DeedleDataFrame에는 누락 된 값이 있습니다. 누락 된 값을 빈 문자열 ""으로 변환하고 싶습니다. valueOr 함수를 사용하려고했지만 도움이되지 않았습니다. 이것을 할 수있는 방법이 있습니까?누락 된 값을 문자열로 변환하는 방법은 무엇입니까?

여기 내 DataFrame입니다 :

FSIdf;;를 입력하면
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] 

ColumnTypes = seq [System.String; System.String];을 포함하여 몇 가지 정보를 얻을 수 있습니다. 따라서 df의 값은 string이고 string option이 아닙니다.

함수 valueOr이다 emptyFoo의 서명이다 string option -> string

let emptyFoo = valueOr "" 

:

let valueOr (someDefault: 'a) (xo: 'a option) : 'a = 
    match xo with 
    | Some v -> v 
    | None -> someDefault 

난 등의 보조 기능을 정의 emptyFoo. 이것은 emptyFoo 다음 명령은 컴파일러에 허용되는 안 의미 df의 값을 입력 string option string로하고 있지 때문에

let df' = Frame.mapValues emptyFoo df 

이있다.

여전히 컴파일러는 불평하지 않고 코드가 실행됩니다. 그러나 df'에는 여전히 누락 된 값이 있습니다.

누락 된 값을 빈 문자열로 변환하는 방법이 있습니까? Frame.mapValues위한

답변

2

Deedle 문서 :

는 그 값이 값 에 지정된 함수를 적용한 결과는 새 데이터 프레임을 구축 만에 적절한 형태로 변환 할 수있는 그 열의 매핑 기능에 대한 입력

따라서 문자열 옵션이 아닌 문자열이 있기 때문에 매핑이 수행되지 않습니다.

나는 당신이 원하는 것을 정확하게 수행하는 것으로 보이는 다른 기능을 알아 차렸다.

let df' = Frame.fillMissingWith "" df 

내가 눈치 중요한 것은 Deedle가 (예를 들어 option 반대)은 자신의 표현의 사용을 시사 <missing>로 그 누락 된 값을 보여줍니다이었다. 그 지식으로 라이브러리가 누락 된 값을 조작하는 방법을 제공 할 것이라고 짐작 했으므로 내 IDE에서 Frame.을 수행하고 사용 가능한 함수 및 설명서 목록을 탐색하여 API를 탐색했습니다.

+0

감사합니다. 나는'float' 값에'fillMissingWith'를 사용했습니다. 어떤 정신적 인 장벽은 그것을 문자열에 사용하는 것을 생각하지 않았습니다. – Soldalma