Python“;用于”;问题-只能使用具有多索引的元组索引

Python“;用于”;问题-只能使用具有多索引的元组索引,python,arrays,pandas,Python,Arrays,Pandas,我要拿C2阵列,大小N,1,做一个B阵列,大小N-1,1 B[0]=C2[1] B[1]=C2[2] 等等。我的代码是: import numpy as np import pandas as pd fields = "B:D" data = pd.read_excel(r'C:\Users\file.xlsx', "Sheet2", usecols=fields) N = 2 # Covariance calculation C1 = data.cov() C2 = data.var()

我要拿C2阵列,大小N,1,做一个B阵列,大小N-1,1

B[0]=C2[1]

B[1]=C2[2]

等等。我的代码是:

import numpy as np
import pandas as pd

fields = "B:D"
data = pd.read_excel(r'C:\Users\file.xlsx', "Sheet2", usecols=fields)
N = 2

# Covariance calculation

C1 = data.cov() C2 = data.var()

B = np.zeros(shape=(N,1))

for i in B:
    B[i,1] = C2[i+1,1]
但错误在于:

ValueError: Can only tuple-index with a MultiIndex

我知道这是一个简单的错误,但无法找到:S(新python用户)

首先,您确定需要使用numpy数组吗?这似乎是python列表的工作

接下来,对于B中的i:,您打算用
做什么?我是什么类型的

在这种情况下,迭代B将把
i
设置为
[0.]
,现在您可以看到下一行将在替换中失败

    B[[0.],i] = C2[[0.]+1,1]
此外,调用
pd.var()
会返回一个一维序列,因此第二个索引没有做任何事情

我想你应该在N上迭代,就像

for i in range(N):
    B[i,1] = C2[i+1]

这样它告诉我TypeError:“int”对象不是在咖啡前回答的一个简单错误。修复了上面的问题。TypeError:只能将list(而不是“int”)连接到list,这是因为我的变量类型吗?Cs是系列(3,)。我明白了,B是64(3,1)。pandas中的variance成员函数返回一个序列(类似于一维数组或向量),因此只有一个索引指定序列中的位置。所以你的
C2[i+1,1]
应该是
C2[i+1]
。你不需要第二个索引,很有效!非常感谢。对于范围(N)中的i:B[i]=C2[i+1]