【问题标题】:Python keyerror: 0Python 键错误:0
【发布时间】:2021-11-06 15:09:13
【问题描述】:

我想从头开始创建一个相关矩阵。当我尝试使用cov[k].append(covariance)covariance 附加到cov 字典时,下面的代码给出了一个键错误。我应该如何解决这个错误?

import pandas as pd

df = pd.read_csv('C:/Users/User/Downloads/Admission_Predict.csv')

df = df.sample(frac=1)
mean = df.mean()
cov = {}

for j in range(len(mean)):
    total = 0
    for k in range(len(mean)):
        terms = ((df.iloc[i, j] - mean.iloc[j]) * (df.iloc[i, k] - mean.iloc[k]) for i in range(len(mean)))
        covariance = sum(terms) / len(mean)
        cov[k].append(covariance)

# Coerce the cov list into a dataframe
cov = pd.DataFrame(cov)
print(cov)

> Traceback (most recent call last):   File
> "C:\Users\User\PycharmProjects\algorithms\mod2.py", line 14, in
> <module>
>     cov[k].append(covariance) KeyError: 0

【问题讨论】:

  • 您正试图在 cov[k] 存在之前访问它。
  • 另外,为什么代码显示cov[k],但错误消息显示cov[j]

标签: python pandas dictionary keyerror


【解决方案1】:

尝试改变:

        cov[k].append(covariance)

收件人:

        cov.setdefault(k, []).append(covariance)

使用setdefault

或者使用这个:

    for k in range(len(mean)):
        terms = ((df.iloc[i, j] - mean.iloc[j]) * (df.iloc[i, k] - mean.iloc[k]) for i in range(len(mean)))
        covariance = sum(terms) / len(mean)
        if k in cov:
            cov[k].append(covariance)
        else:
            cov[k] = [covariance]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多