1
큰 데이터 세트보다 더 효율적인 그룹화를 위해 파이썬 3에서 팬더 데이터 프레임을 보관하려고합니다. 현재 성능 병목 현상은 .apply() 메소드를 사용하여 데이터 프레임을 반복하는 중입니다.반복하지 않고 팬더에서 16 진수 열 변환
열 내의 모든 항목이 16 진수이므로 pd.to_numeric 함수가 원하는대로 정확하게 수행해야합니다.
다양한 옵션을 시도했지만 지금까지 아무 것도 작동하지 않았습니다.
# This sets all values to np.nan with coerced errors, 'Unable to parse string' with raise errors.
dataframe[bin] = pd.to_numeric(dataframe[to_bin], errors='coerce') % __NUM_BINS__
# Gives me "int() Cannot convert non-string with explicit base"
dataframe[bin] = int(dataframe[to_bin].astype(str), 16) % __NUM_BINS__
# Value Error: Invalid literal for int with base 10 'ffffffffff'
dataframe[bin] = dataframe.astype(np.int64) % __NUM_BINS__
의견이 있으십니까? 이것은 사람들이 과거에 다뤄야 만하는 것처럼 보입니다.
열 엔터티를 문자열로 변환하려면이 솔루션을 사용해 보셨습니까? http://stackoverflow.com/a/22231860/1607105? 'int (x, 16)'에 HEX 값이 있다는 것을 알고 있기 위해 문자열 변환 후에'0x' 접두어를 추가해야 할 수도 있습니다. – dblclik
그냥 문자열로 변환하고 값 앞에 0x를 붙이려고했지만 "int() 명시 적 기본이 아닌 문자열을 변환 할 수 없습니다"가 표시됩니다. 내 데이터 프레임을 확인하고 실제 값은 확실히 문자열 (예 : 0xfffff)입니다. – ZSmyth
'list-comprehension'을 사용하고 그로부터 시리즈를 만들어 냄으로써 성능 향상을 얻을 수 있습니다. ''ser.tolist()에서 x에 대해 int (x, 16) ' –