2017-12-03 1 views
1

여기 내 코드에서 상관 행렬은 데이터 프레임이고 diag는 목록입니다. 다음 코드 (CholDC 부분의 아래쪽)를 실행하면 numpy.float64 개체가 반복 가능하지 않습니다. 이 코드를 작동 시키려면 어떻게해야합니까?Python DataFrame 요소를 순환하고 값을 할당

def CholDC (correl, diag): 
    for column in correl: 
     j = 0 
     for j in correl[str(column)][j]: 
      Sum = correl[str(column)][j] 
      k = int(column)-1 
      if k >= 1: 
       Sum = Sum - correl[str(column)][k]*correl[str(j)][k] 
      else: 
       Sum = Sum 
      if int(column) == j: 
       if Sum <= 0: 
        print ("Should be PSD") 
       else: 
        diag[int(column)] = np.sqrt(Sum) 
      else: 
       correl[str(j)][int(column)] = Sum/diag[int(column)] 

diag = [] 
df_correl = pd.DataFrame(df_correlation) 
CholDC(df_correl, diag) 
+0

일부 샘플 데이터가 도움이 될 것입니다. – kbball

+0

'for' 및'if' 호출 대신 사용할 수있는 팬더 방법이있을 수 있으므로 데이터 (현재 결과 및 원하는 결과)를 설명하거나 표시하십시오. – Parfait

답변

0

데이터 프레임을 반복하려면 iterrows()를 사용해야합니다. 아래의 예를 참조하십시오

import pandas as pd 
import numpy as np 

df = pd.DataFrame(np.random.randint(0,100, size=(10, 4)), columns=list('ABCD')) 

print(df) 

for index, row in df.iterrows(): 
    print(row['B'], row['C']) 

#dataframe output 

    A B C D 
0 53 60 63 44 
1 17 12 20 55 
2 85 28 76 99 
3 39 75 69 30 
4 2 85 21 3 
5 22 5 45 33 
6 78 65 22 38 
7 14 99 0 67 
8 18 70 53 19 
9 54 25 96 7 

#output from loop 

60 63 
12 20 
28 76 
75 69 
85 21 
5 45 
65 22 
99 0 
70 53 
25 96 

그래서 iterrows()를 사용하여 코드 대신 for column in correl에.

관련 문제