代码之家  ›  专栏  ›  技术社区  ›  Fletchy1995

keyror:'标签[数据]不包含在轴中'

  •  0
  • Fletchy1995  · 技术社区  · 8 年前

    我尝试了几种不同的方法来将行添加到现有的熊猫数据帧中。例如,我尝试了解决方案 here .但是我无法纠正这个问题。我已经恢复到原来的代码,希望有人能在这里帮助我。

    这是我的代码:

    print('XDF Created, Starting Bucket Separation...')
    XDFDFdrop = pd.DataFrame.duplicated(XDFDF,subset='LastSurveyMachineID')
    index_of_unique = XDFDF.drop_duplicates(subset='LastSurveyMachineID')
    for index,row in zip(XDFDFdrop,XDFDF.itertuples()):
        if index:
            goodBucket.append(row)
        else:
            badBucket.append(row)
    goodBucketDF = pd.DataFrame(goodBucket)
    badBucketDF = pd.DataFrame(badBucket)
    
    print('Bucket Separation Complete, EmailPrefix to F+L Test Starting...')
    for emp , fname , lname , row1 in zip(goodBucketDF['EmailPrefix'] , goodBucketDF['Fname'] , goodBucketDF['Lname'] , goodBucketDF.itertuples()):
        for emp2 , row2 in zip(goodBucketDF['EmailPrefix'] , goodBucketDF.itertuples()):
            if columns != rows:
                temp = fuzz.token_sort_ratio((fname+lname),emp)
                temp2 = fuzz.token_sort_ratio((fname+lname),emp2)
                if abs(temp - temp2) < 10:
                    badBucketDF.append(list(row2))
                    goodBucketDF = goodBucketDF.drop(row2)
                    removed = True
            rows += 1
        if removed:
            badBucketDF.append(list(row2))
            goodBucketDF = goodBucketDF.drop(row2)
            removed = False
        columns += 1
    

    请注意:xdfdfdf是一个相对较大的数据集,它使用panda构建,并从数据库中提取(它不应影响您看到的刚刚计算我将公开该信息的代码)。

    这是我的错误:

    Traceback (most recent call last):
      File "/Users/john/PycharmProjects/Greatness/venv/Recipes.py", line 122, in <module>
        goodBucketDF = goodBucketDF.drop([rows])
      File "/Users/john/PycharmProjects/Greatness/venv/lib/python3.6/site-packages/pandas/core/frame.py", line 3694, in drop
        errors=errors)
      File "/Users/john/PycharmProjects/Greatness/venv/lib/python3.6/site-packages/pandas/core/generic.py", line 3108, in drop
        obj = obj._drop_axis(labels, axis, level=level, errors=errors)
      File "/Users/john/PycharmProjects/Greatness/venv/lib/python3.6/site-packages/pandas/core/generic.py", line 3140, in _drop_axis
        new_axis = axis.drop(labels, errors=errors)
      File "/Users/john/PycharmProjects/Greatness/venv/lib/python3.6/site-packages/pandas/core/indexes/base.py", line 4387, in drop
        'labels %s not contained in axis' % labels[mask])
    KeyError: 'labels [(15, '1397659289', 'joshi.penguin@gmail.com', 'jim', 'smith', '1994-05-04', 'joshi.penguin', 'CF032611-8A86-4688-9715-E1278E75D046')] not contained in axis'
    

    进程已完成,退出代码为1

    我想知道是否有人能解决这个错误:我可以从一个数据帧中添加一个take a row,将它放在另一个数据帧中(不需要按顺序排列,我不在乎索引是否重复)。一旦它进入新的数据帧,我就要把它从旧的数据帧中删除。

    我当前的问题是从旧数据帧中删除行。任何帮助都将不胜感激。

    如果你对密码有任何疑问,请告诉我,我会尽快回复。谢谢你的帮助。

    编辑1

    下面我包括了第1行的打印输出。希望这也会有所帮助。

    Pandas(Index=1, _1=2, entity_id='1180722688', email='assassin_penguin@live.com', Fname='jim', Lname='smith', Birthdate='1990-09-14', EmailPrefix='assassin_penguin', LastSurveyMachineID=None)
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   tobsecret    8 年前

    鉴于xdfdf是 pandas.DataFrame ,下面的工作不应该吗?

    XDFDFdrop = pd.DataFrame.duplicated(XDFDF,subset='LastSurveyMachineID')
    goodBucket = XDFDF.loc[~XDFDFdrop] #the ~ negates a boolean array
    badBucket = XDFDF.loc[XDFDFdrop]
    

    编辑:

    更新后的错误来自将整行而不是索引传递给函数 pandas.DataFrame.drop .