ValueError:基于位置的索引只能有[integer、integer slice、listlike of integer、boolean array]类型

2024-04-26 05:13:39 发布

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

我想从头开始计算协方差。协方差升高

ValueError( ValueError: Location based indexing can only have [integer, integer slice (START point is INCLUDED, END point is EXCLUDED), listlike of integers, boolean array] types error.

我应该改变什么才能使代码正常工作

import pandas as pd
import math

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

# Create a list for each column of the dataframe
for col in df:
    col_list = df[col].tolist()

    # Mean
    sums = 0
    for a in range(len(col_list)):
        sums += df.iloc[a]
    mean = sums / len(col_list)
    mean = [m for m in pd.to_numeric(mean, errors='coerce')]

    # Standard deviation
    for mean in range(len(col_list)):
        sd = math.sqrt(mean)

    # Correlation matrix
    cov = []
    for j in range(mean):
        for k in range(mean):

            # Random variables
            var = ((df.iloc[i, j] - str(range(mean))) * (df.iloc[i, k] - str(range(mean))) for i in str(range(mean)))

            # Covariance
            covariance = sum(var) / (mean - 1)
            print(covariance)

回溯

> Traceback (most recent call last):   File
> "C:\Users\User\PycharmProjects\algorithms\Fibonacci recursive.py",
> line 31, in <module>
>     covariance = sum(var) / (mean - 1)   File "C:\Users\User\PycharmProjects\algorithms\Fibonacci recursive.py",
> line 28, in <genexpr>
>     var = ((df.iloc[i, j] - str(range(mean))) * (df.iloc[i, k] - str(range(mean))) for i in str(range(mean)))   File
> "C:\Users\User\PycharmProjects\algorithms\venv\lib\site-packages\pandas\core\indexing.py",
> line 889, in __getitem__
>     return self._getitem_tuple(key)   File "C:\Users\User\PycharmProjects\algorithms\venv\lib\site-packages\pandas\core\indexing.py",
> line 1450, in _getitem_tuple
>     self._has_valid_tuple(tup)   File "C:\Users\User\PycharmProjects\algorithms\venv\lib\site-packages\pandas\core\indexing.py",
> line 725, in _has_valid_tuple
>     raise ValueError( ValueError: Location based indexing can only have [integer, integer slice (START point is INCLUDED, END point is
> EXCLUDED), listlike of integers, boolean array] types
> 
> Process finished with exit code 1

Tags: indfforrangecolmeanuserslist
1条回答
网友
1楼 · 发布于 2024-04-26 05:13:39

似乎{}(类似于[k,i])是问题所在。有关选项,请参见iloc reference

根据你的DataFrame我想你想要访问位置[I,j]和[I,k]的值,对吗? 因此,您可以使用.iloc[i]获取行i,然后访问所需的列。下面是一个简单的示例,用于检索用于执行计算的一个值


import pandas as pd

df = pd.DataFrame({
    'a' : [0, 1, 2, 3, 4, 5],
    'b' : [6, 7, 8, 9, 10, 11]
})


i = 2
j = 1

value = int(df.iloc[i:i+1,j]) # output: 8

相关问题 更多 >