Python数据帧通过元素循环并分配一个值

2024-10-03 04:25:38 发布

您现在位置:Python中文网/ 问答频道 /正文

这里,在我的代码中,相关矩阵是一个数据帧,diag是一个列表。 当我运行以下代码(底部的CholDC部分)时,它返回numpy.float64object is not iterable。 我需要做什么才能使这个代码正常工作?你知道吗

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)

Tags: 数据代码indf列表forifcolumn
1条回答
网友
1楼 · 发布于 2024-10-03 04:25:38

要在数据帧中循环,需要使用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。你知道吗

相关问题 更多 >