.writer(cacheWriter)
我在数据集上使用上面的代码,该数据集的列“Class”为0和1。我想要做的很简单,我在数据集中获得Class == 1的索引,我使用它来制作一个子集。
然而,即使索引是从同一数据集中获得的,我在第二行得到错误“位置索引器超出范围”。他们怎么能超出范围?有人可以帮忙吗?
答案 0 :(得分:0)
我认为你只需要boolean indexing
:
fraud_samples = dataset[dataset.Class == 1]
如果需要指数:
fraud_indices = fraud_samples.index
但是我得到错误"位置索引器超出界限"即使索引是从同一数据集中获得的,也在第二行。他们怎么能超出范围?
原因是您的指数不是默认值。因此,根据位置选择DataFrame
和函数iloc
的长度有一些更高的值,而不是像loc
这样的索引名称。
样品:
dataset = pd.DataFrame({'Class':[0,1,0,1]}, index=[0,1,3,5])
print (dataset)
Class
0 0
1 1
3 0
5 1
fraud_indices = np.array(dataset[dataset.Class == 1].index)
print (fraud_indices)
[1 5]
你不能选择第6行(蟒蛇数从0开始,所以5
),因为DataFrame.iloc
不存在:
fraud_samples = dataset.iloc[fraud_indices, :]
print (fraud_samples)
IndexError:位置索引器超出范围
但是如果按DataFrame.loc
选择索引值:
fraud_samples = dataset.loc[fraud_indices, :]
print (fraud_samples)
Class
1 1
5 1