2017-12-19 11 views
1

다음과 관련하여 고민 중입니다. I의 값을 플롯하기 위하여조건부 계산 값으로 팬더 데이터 프레임의 값 바꾸기

df2 = DataFrame({"site":['site1','site2','site3','site4'], 
       "concentration":[12000,2000,'<100','<200']}) 

(예 < 100 < 200) 검출 한계 이하로 될 수있는 농도 값을 갖는 dataframe을 갖고, 난에 숫자 < (100)를 교체하고자 0.5 x 검출 한계. 따라서 < 100은 50이됩니다. < 200이됩니다. 코드는 열 TPH <을 추가하여 탐지 한계 아래의 사이트를 나타냅니다.

어떤 도움이 많이 loc으로, <와 요소를 찾기 위해 인덱스를 마스크 만들기
+0

을 - 나는 숫자로 변환을 권 해드립니다 -answers) 옆에있는 회색 체크를 클릭하고 녹색으로 전환합니다. 감사! –

답변

2

을 감사

및 업데이트 -

m = df2.concentration.astype(str).str.contains('<') 
df2.loc[m, 'concentration'] = \ 
     pd.to_numeric(df2.loc[m, 'concentration'].str.lstrip('<'), errors='coerce')/2 

df2 

    concentration site 
0   12000 site1 
1   2000 site2 
2   50 site3 
3   100 site4 

또한, 검출 한계에서 m 기록 행. 마음 concentration하십시오

df2['TPH<'] = m 
df2 

    concentration site TPH< 
0   12000 site1 False 
1   2000 site2 False 
2   50 site3 True 
3   100 site4 True 

객체 컬럼입니다 -

m 

0 False 
1 False 
2  True 
3  True 
Name: concentration, dtype: bool 

df2에 할당합니다. 질문에 대한 답변을 한 경우 https://stackoverflow.com/help/someone ([가장 유용한 답변을 받아 들일] 제발,

df2.concentration = df2.astype(float) 

또는

df2.concentration = pd.to_numeric(df2.concentration, errors='coerce')