根据索引从pandas数组中删除值

时间:2019-04-25 16:10:51

标签: python pandas

可能以前被问过,但找不到适合我的答案。

我有一个相当大的数组,由3个唯一的类名组成。我正在尝试基于索引值创建3个新数组。使用费舍尔的鸢尾花数据集(由于它较小且在测试中有用),我尝试使用以下代码:

iris_ds.set_index("Class")

iris_SA = iris_ds.drop("Iris-versicolor", axis=0)
iris_SA = iris_SA.drop("Iris-virginica", axis=0)

但是,当我运行它时,出现以下错误:

  

回溯(最近通话最近):
  在第18行的文件“ AAA.py”中          iris_SA = iris_ds.drop(“ Iris-versicolor”,axis = 0)

     

文件“ C:..... \ Anaconda3 \ lib \ site-packages \ pandas \ core \ frame.py”,行   3940,在下降       错误=错误)文件“ C:..... \ Anaconda3 \ lib \ site-packages \ pandas \ core \ generic.py”,行   3780,在下降       obj = obj._drop_axis(标签,轴,级别=级别,错误=错误)

     

文件“ C:..... \ Anaconda3 \ lib \ site-packages \ pandas \ core \ generic.py”,   第3812行,在_drop_axis中       new_axis = axis.drop(labels,errors = errors)
  文件“ C:..... \ Anaconda3 \ lib \ site-packages \ pandas \ core \ indexes \ base.py”,   行4965,在下降中       '{}未在轴中找到。'。format(labels [mask]))KeyError:“ [['Iris-versicolor']在轴中未找到”

有关如何解决的任何建议?

2 个答案:

答案 0 :(得分:1)

检查以确保您重新分配了set_index语句,set_index不是就地语句。

iris_ds = iris_ds.set_index("Class")

iris_ds.set_index("Class", inplace=True)

答案 1 :(得分:1)

除了提及问题之外,我还可以提及一个名为"id" "a1" "b1" "c1" "not_relevant" "p_a1" "p_b1" "p_c1" "total" a 2 6 0 x 2 19 12 118.0 a 4 2 7 x 3.5 7 11 105.0 b 1 9 4 x 7 1.5 4 36.5 b 7 5 11 x 8 12 5 171.0 的奇妙工具:

df.groupby()

输出:

df = pd.DataFrame({
    'class':['a']*2+['b']*3+['c']*3,
    'other': np.arange(11,99,11),
})

print(df, '\n\nafter groupby:\n\n')

for classname, classdf in df.groupby('class'):
    print('classname:\n', classname,  '\nclassdf:\n', classdf, sep='', end='\n=====\n')