2017-01-25 4 views
1

데이터가 유효하지 않을 때 반영하기 위해 팬더의 여러 열에 걸쳐지도를 적용하려고합니다. 내 df [ 'Count'] 열에서 데이터가 유효하지 않으면 df [ 'Value'], df [ '신뢰도 하한값], df ['신뢰도 간격 '] 및 df ['Denominator ']를 설정하려고합니다. 열을 -1로 설정합니다. 팬더의 여러 열에 걸쳐지도 적용

는 dataframe의 샘플입니다

df[['Value', 'Count', 'Lower Confidence Interval', 'Upper Confidence Interval', 'Denominator']] = df['Count'].map(set_minus_1s) 

및 오류 점점 : 다음

set_minus_1s = {np.nan: -1, '*': -1, -1: -1} 

: 현재

Count Value  Lower Confidence Interval Upper Confidence Interval Denominator 
121743 54.15758428 53.95153779    54.36348867    224794 
280  91.80327869 88.18009411    94.38654088    305 
430  56.95364238 53.39535553    60.44152684    755 
970  70.54545455 68.0815009     72.89492873    1375 
nan    
70  28.57142857 23.27957213    34.52488678    245 
125  62.5  55.6143037     68.91456314    200 

, 내가 노력하고

ValueError: Must have equal len keys and value when setting with an iterable 

set_minus_1s 사전을지도라고 부르기 위해 각 열에 대해 별도의 줄을 사용하는 대신 하나의지도를 호출하도록 열 참조를 연결하는 방법이 있습니까?

답변

1

난 후 map을 적용하면 where 또는 mask를 사용하고 isnull을 모든 행을 곳없는 대체 할 수 있다고 생각 :

val = df['Count'].map(set_minus_1s) 
print (val) 
0 NaN 
1 NaN 
2 NaN 
3 NaN 
4 -1.0 
5 NaN 
6 NaN 
Name: Count, dtype: float64 

cols =['Value','Count','Lower Confidence Interval','Upper Confidence Interval','Denominator'] 
df[cols] = df[cols].where(val.isnull(), val, axis=0) 
print (df) 
     Count  Value Lower Confidence Interval Upper Confidence Interval \ 
0 121743.0 54.157584     53.951538     54.363489 
1  280.0 91.803279     88.180094     94.386541 
2  430.0 56.953642     53.395356     60.441527 
3  970.0 70.545455     68.081501     72.894929 
4  -1.0 -1.000000     -1.000000     -1.000000 
5  70.0 28.571429     23.279572     34.524887 
6  125.0 62.500000     55.614304     68.914563 

    Denominator 
0  224794.0 
1  305.0 
2  755.0 
3  1375.0 
4   -1.0 
5  245.0 
6  200.0 

cols = ['Value', 'Count', 'Lower Confidence Interval', 'Upper Confidence Interval', 'Denominator'] 
df[cols] = df[cols].mask(val.notnull(), val, axis=0) 
print (df) 
     Count  Value Lower Confidence Interval Upper Confidence Interval \ 
0 121743.0 54.157584     53.951538     54.363489 
1  280.0 91.803279     88.180094     94.386541 
2  430.0 56.953642     53.395356     60.441527 
3  970.0 70.545455     68.081501     72.894929 
4  -1.0 -1.000000     -1.000000     -1.000000 
5  70.0 28.571429     23.279572     34.524887 
6  125.0 62.500000     55.614304     68.914563 

    Denominator 
0  224794.0 
1  305.0 
2  755.0 
3  1375.0 
4   -1.0 
5  245.0 
6  200.0 
+0

감사합니다 - 그 치료를했다! – RustyBrain

+0

죄송합니다, 제 담당자가 너무 낮았습니다 - 지금은 그렇지 않습니다! Upvoted. – RustyBrain

+0

고마워요, 좋은 하루 되세요! – jezrael

관련 문제