Python DataFrame循环遍历元素并分配值

时间:2017-12-03 20:57:42

标签: python loops for-loop dataframe iteration

这里,在我的代码中,相关矩阵是数据帧,diag是列表。 当我运行以下代码(底层的CholDC部分)时,它返回numpy.float64对象不可迭代。 我需要做些什么来使这段代码有效?

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)

1 个答案:

答案 0 :(得分: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