df["embeddings"] = df["embeddings"].apply(eval).apply(np.array)
df["embedding"] = df["embedding"].progress_apply(lambda x: eval(x))
두 코드의 차이는 주로 다음과 같은 측면에서 발생합니다:
1. 평가 방법:
df["embeddings"] = df["embeddings"].apply(eval).apply(np.array)eval()을 사용하여 embeddings 열의 각 값을 평가하고, 그 결과를 np.array()를 통해 NumPy 배열로 변환합니다. apply를 사용하여 첫 번째 apply(eval)로 문자열이나 다른 표현식들을 평가하고, 두 번째 apply(np.array)로 평가된 결과를 NumPy 배열로 변환합니다.df["embedding"] = df["embedding"].progress_apply(lambda x: eval(x))eval()을 사용하여 embedding 열의 값을 평가하지만, 여기서는 progress_apply()와 lambda를 사용하고 있습니다.lambda x: eval(x)는 eval(x)를 단순히 람다 함수로 감싼 것입니다. 여기서는 NumPy 배열로 변환하지 않고, 단순히 평가된 값을 새로운 값으로 설정합니다.2. progress_apply의 사용:
apply 메서드를 사용합니다.tqdm 라이브러리에서 제공하는 progress_apply를 사용하여, 적용 과정에서 진행 상황을 시각적으로 보여줍니다. 이 기능은 특히 큰 데이터셋을 처리할 때 유용할 수 있습니다.3. 결과의 차이:
"embeddings" 열은 NumPy 배열들을 담고 있습니다.embedding 열에는 평가된 값이 그대로 저장되며, 별도의 배열 변환은 없습니다.이 두 코드의 차이는 주로 데이터를 어떻게 변환하고, 그 결과를 어떻게 저장할 것인지에 따라 달라집니다.