2016-09-21 3 views
0

팬더 데이터 프레임에 함수를 적용하려고합니다.이 함수는 입력으로 두 개의 np.array가 필요하며 잘 정의 된 모델을 사용하여 적합합니다.팬더는 목록에서 np.array로 열 유형을 변환합니다.

"행"에 np.array가 아닌 JSON 파일에서 읽은 목록이 있기 때문에 선택한 열에서이 함수를 적용 할 수 없다는 것이 핵심입니다.

지금, 나는 해봤 다른 솔루션 :

#Here is where I discover the problem 

train_df['result'] = train_df.apply(my_function(train_df['col1'],train_df['col2'])) 

#so I've tried to cast the Series before passing them to the function in both these ways: 

X_col1_casted = trai_df['col1'].dtype(np.array) 
X_col2_casted = trai_df['col2'].dtype(np.array) 

이 작동하지 않습니다.

X_col1_casted = trai_df['col1'].astype(np.array) 
X_col2_casted = trai_df['col2'].astype(np.array) 

이 작동하지 않습니다.

X_col1_casted = trai_df['col1'].dtype(np.array) 
X_col2_casted = trai_df['col2'].dtype(np.array) 

않습니다.

내가 지금 할 생각을하고있어 같은 긴 절차입니다 :)합니다 (uncasted 열 시리즈에서 시작

에서, np.array에 함수를 적용) 목록 (로 변환 그들에 반복 단일 요소를 만들고 결과를 임시 목록에 추가합니다. 완료되면이 목록을 새 열로 변환합니다. (분명히 작동하는지 모르겠다.)

나를 어떻게 도와 줄지 아시나요?

편집 : 나는 분명히 하나의 예를 추가

기능은 입력으로 두 np.arrays을 가지고 가정합니다. 이제 json 파일에서 검색되므로 두 개의 목록이 있습니다. 상황은 다음과 같습니다.

col1  col2 result 
[1,2,3]  [4,5,6] [5,7,9] 
[0,0,0]  [1,2,3] [1,2,3] 

분명히 함수는 합계가 아니며 자체 함수입니다. 잠시 동안이 합계는 배열에서 시작하여 양식 목록으로 만 시작될 수 있다고 가정합니다. 어떻게해야합니까? 여기에 각 요소를 변환하는 사전

+0

사용'.values' 특성에 그것을 배열로 변환하십시오. –

+0

당신은 또한 어떻게 말해 줄 수 있습니까? 한 번에 전체 열이 아닌 단일 셀 요소에 사용해야합니다. 행당 하나의 배열이 필요합니다. – LeoCella

+0

* 행당 하나의 배열 *을 의미합니까? 나는 당신이 전체 열을 수적으로 배열로 변환하기를 원한다는 것을 이해했다. – AlvaroP

답변

4

사용 apply에서

덕분에 해당하는 배열입니다 :

df['col1'] = df['col1'].apply(lambda x: np.array(x)) 

type(df['col1'].iloc[0]) 
numpy.ndarray 

데이터 :

df = pd.DataFrame({'col1': [[1,2,3],[0,0,0]]}) 
df 

Image

+1

완벽한, 고마워! – LeoCella

+0

'df [ 'col1'] = df [ 'col1']. apply (np.array)'도 잘 작동합니다. – tenpercent