2017-09-16 5 views
1

데이터 프레임에 누락 된 값을 묻습니다. df. 나는 A과 300 NaN's 란을 가지고있다. 임의로 2/3을 value1으로 설정하고 나머지는 value2으로 설정하고 싶습니다.열에있는 na의 1/3을 하나의 값으로 나머지를 다른 값으로 무작위로 설정합니다.

도와주세요.

편집 : 실제로 항목 할당을 지원하지 않는 dask에서이 작업을 수행하려고합니다. 이것이 내가 현재 가지고있는 것입니다. 처음에, 나는 내가 다음과 같은 오류를 가지고 모든 NA's

da.where(df.A.isnull() == True, 'value1', df.A) 

value1에 변환 할 수 있습니다 생각 : 댓글이 제안

ValueError: need more than 0 values to unpack 
+0

[Series.where] (http://dask.pydata.org/en/latest/dataframe-api.html#dask.dataframe.Series.where)를 사용해 보셨습니까? – MRocklin

답변

0

, 당신이 Series.where와 함께이 문제를 해결할 수 있습니다.

다음은 작동하지만 이것이 얼마나 효율적인지는 약속 할 수 없습니다. (나는 numpy.choice 한 번에 교체의 전체 열을 생산하는 것이 더있을 수 있습니다 생각한다.)

df['A'] = d['A'].where(~d['A'].isnull(), 
    lambda df: df.map(
     lambda x: random.choice(['value1', 'value1', x]))) 

설명 : 값이 비수 (NaN) null가 아닌 경우, 확실히 원본을 보관하십시오. 그것이 null 인 경우 첫 번째 람다가 생성 한 데이터 프레임의 해당 값으로 대체하십시오. 이것은 데이터 프레임 (청크)의 값을 맵핑하여 1/3의 원래 값과 다른 값의 'value1'을 무작위로 선택합니다.

데이터에 따라 열의 데이터 형식이 변경되었을 가능성이 있습니다.