2016-10-06 1 views
0

하나의 단일 키로 다른 열을 매핑하여 일부 열의 값을 할당하려고합니다. 문제는 칼럼에 NaN을 할당하기 때문에 매핑이 올바르게 사용되고 있다고 생각하지 않는다는 것입니다.Pandas - df.loc 다른 df를 기반으로하는 열을 바꿀 때 NaN을 할당합니다.

'SampleID'로 매핑해야합니다. 여기

이 내가 값을 할당하려면이 명령을 사용하고

>>> numerical 
      Volume_Received Quantity massug 
SampleID          
sample8    10.0  75.0  5.0 
sample70   15.0  275.0 25.0 
sample72   12.5  231.0 15.0 
sample89    6.0  294.0 15.0 
sample90    4.0  16.8  6.0 
sample96    6.0  31.8  6.0 
sample97    3.0  15.4  4.0 
sample99    3.0  101.6  6.0 
sample100   8.0  120.4 10.0 

나는 그들을 위해이 새로운 값입니다 내가

>>> df.ix[new_df['SampleID'].isin(pooled['SampleID']), cols] 
     Volume_Received Quantity massug 
88280    2.0  15.0  1.0 
88282    3.0  55.0  5.0 
88284    2.5  46.2  3.0 
88286    2.0  98.0  5.0 
229365    2.0  8.4  3.0 
229366    3.0  15.9  3.0 
229367    1.5  7.7  2.0 
233666    1.5  50.8  3.0 
233667    4.0  60.2  5.0 

에 값을 할당 할 DF이다

df.ix[df['SampleID'].isin(pooled['SampleID']), cols] = numerical[cols] 

pooled는 기본적으로 pooled = df[df['type'] == 'Pooled']cols입니다. 위에 표시된 세 개의 열. 위의 코드를 실행 한 후 모든 값에서 NaN을받습니다. 나는 팬더에게 매핑 때문에 존재하지 않는 값을 얻고 NaN (가정)으로 변환되는 null을 반환한다고 말하고 있다고 생각합니다.

+1

색인이 동일하지 않기 때문에 그것이 작동하지 않는 이유라고 생각합니다. 수치 [cols] .values를 시도해보십시오. –

+0

그래, 그게 내가 생각했던 것인데, 올바르게 매핑하는 방법을 몰라. 당신은'.values' 속성 인 Steven에 대해서도 옳았습니다. 내가 그것을 받아 들일 수 있도록 대답으로 게시 하시겠습니까? 고마워요! – mk2

답변

1

지수는

는 크기가 정확히 동일한 경우에만

df.ix[df['SampleID'].isin(pooled['SampleID']), cols] = numerical[cols].values 

를 사용할 수 일치하지 않습니다!

관련 문제