【问题标题】:Drop values from pandas array, based on index根据索引从 pandas 数组中删除值
【发布时间】:2019-09-15 03:17:11
【问题描述】:

之前可能有人问过,但找不到适合我的答案。

我有一个相当大的数组,由 3 个唯一的类名组成。我正在尝试根据索引值创建 3 个新数组。使用 Fisher's Iris 数据集(因为它更小且测试有用),我尝试使用以下代码:

iris_ds.set_index("Class")

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

但是,当我运行它时,我收到以下错误:

回溯(最近一次通话最后一次):
文件“AAA.py”,第 18 行,在 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(labels, axis, level=level, errors=errors)

文件 "C:.....\Anaconda3\lib\site-packages\pandas\core\generic.py", 第 3812 行,在 _drop_axis new_axis = axis.drop(标签,错误=错误)
文件 "C:.....\Anaconda3\lib\site-packages\pandas\core\indexes\base.py", 第 4965 行,下降 '{} not found in axis'.format(labels[mask])) KeyError: "['Iris-versicolor'] not found in axis"

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

【问题讨论】:

  • 您要重新分配set_index 吗? iris_ds = iris_ds.set_index("Class") set_index 不是就地操作。
  • 谢谢。完美地工作。您可以设置为答案并标记为已解决

标签: python pandas


【解决方案1】:

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

iris_ds = iris_ds.set_index("Class")

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

【讨论】:

    【解决方案2】:

    除了回答问题,我可以提一个名为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')
    

    输出:

      class  other
    0     a     11
    1     a     22
    2     b     33
    3     b     44
    4     b     55
    5     c     66
    6     c     77
    7     c     88 
    
    after groupby:
    
    
    classname:
    a
    classdf:
      class  other
    0     a     11
    1     a     22
    =====
    classname:
    b
    classdf:
      class  other
    2     b     33
    3     b     44
    4     b     55
    =====
    classname:
    c
    classdf:
      class  other
    5     c     66
    6     c     77
    7     c     88
    =====
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-01
      • 2019-09-17
      • 2021-08-03
      • 2021-07-20
      • 2015-07-19
      • 1970-01-01
      • 2021-06-18
      • 2018-10-31
      相关资源
      最近更新 更多