정수와 혼합 분수가 혼합 된 문자열 열이있는 데이터 프레임이 있습니다. 열 'y'를 부동으로 변환하고 싶습니다.데이터 프레임 열의 혼합 숫자 문자열을 분할하여 부동 소수점으로 변환
는x y z
0 4 Info
1 8 1/2 Info
2 3/4 Info
3 10 Info
4 4 Info
5 6 1/4 Info
내가 고려하고 논리 '에 의해'Y ''와 '열을 분할하는 것입니다 /'과 같을 것이다 세 개의 열을 만듭니다. 여기에서
x base b c z
0 4 0 0 Info
1 8 1 2 Info
2 0 3 4 Info
3 10 0 0 Info
4 4 0 0 Info
5 6 1 4 Info
나는
def convertReplace(df):
convert = lambda x: float(x)
df['base'].apply(convert)
df['b'].apply(convert)
df['c'].apply(convert)
decimal = lambda x,y: x/y
try:
df['d'] = decimal(df['b'],df['c'])
df['y'] = df['base'] + df['d']
except:
df['y'] = df['base']
return df
이 작동 할 수도 있지만이 방법을 사용하여 분할 열이 here를 찾을 수 없습니다.
df = pd.DataFrame(df.y.str.split(' ',1).str.split('/',1).tolist(),columns = ['base','b','c'])
오류는 3 인자가 1, 2, 3은 심지어 this thread 여러 분리기를 사용하지 않는 수 있습니다 때마다 기대했다.
실제 데이터 프레임에는 400,000 개가 넘는 행이 있습니다. 효율성은 좋겠지 만 좀 더 관심있게 생각합니다. 이 논리가 맞습니까? 아니면이를 위해보다 간결한 방법이 있습니까? 어떤 도움을 주셔서 감사합니다.
나는이 작업을 거라고 생각하지만 내 실제 데이터가 조금 진흙 투성이입니다. 몇 가지 값에는 텍스트가 포함됩니다. 어떻게 이것을 적용 할 수 있지만 분수 모듈이 실행되는 유효하지 않은 리터럴을 건너 뛰는가? 형식 검사를위한 if-else 검사가 있습니까? 이 경우 'loc'명령을 사용합니까? –
부정적인 분수와 진흙 투성이 텍스트를 해결하기위한 솔루션을 업데이트했습니다. – vk1011
그레이트! 이것은 정말로 도움이되었습니다. @ vk1011 감사합니다! –