熊猫应用功能删除数据

时间:2016-08-31 07:27:59

标签: python pandas

In  [1]: df = pd.DataFrame([[pubA, linkA,None], [pubB, linkB,textB], [pubC, linkC,textC]], columns=['pub', 'link','text])

In  [2]: df
Out [2]: 
    pub   link   text
 0  pubA  linkA  None
 1  pubB  linkB  textB
 2  pubC  linkC  textC

我有代码我用来从网上提取文字。我的函数遍历df并检查'text'的内容以确保它首先为空。如果'text'已有内容,则会pass。如果'text'为空,则会检查'pub'以查看我是否为该出版物获得了适当的BeautifulSoup模板,如果是,则返回干净的文本。如果还没有模板,则函数将pass

def pull_text(row):
    try:
        if(pd.isnull(row['text'])):
            if row['publication' ] == 'PubA':
                print('Now serving row',row.name,'of',len(df),'Template:',row['publication'])
                sys.stdout.flush()

                #Do Template A
                time.sleep(rand)
                return article.strip()

            elif row['publication' ] == 'PubB':
                #Do Template B
                time.sleep(rand)
                return article.strip()

            elif row['publication' ] == 'PubC':
                # Do Template C
                rand = randint(2,10)
                print('Waiting', rand, 'seconds')
                sys.stdout.flush()

                time.sleep(rand)
                return result.strip()
            else:
                pass
                print('No template set for', row['publication'],':row', row.name)
        else:
            pass
    except AttributeError:
        print('error at',row.name)
        sys.stdout.flush()
        return 'error'

df['text'] = df.apply (lambda row: pull_text (row),axis=1)

每个模板都运行良好,并从每个出版物中提取文本。但是每当我运行该函数时(例如在添加新模板之后),它似乎会擦除所有预先存在的文本数据并填充预先存在的空白(它可以在哪里)。

In  [3] df['text'] = df.apply (lambda row: pull_text (row),axis=1)
In  [4] df
Out [4] pub   link   text
     0  pubA  linkA  textA
     1  pubB  linkB  None
     2  pubC  linkC  None

虽然我想要的是

Out [4] pub   link   text
     0  pubA  linkA  textA
     1  pubB  linkB  textB
     2  pubC  linkC  textC

我能想到的是,如果不是'text'的话,我会以某种方式将border="0"的值设置为空值,但我不知道我是怎么做的。< / p>

1 个答案:

答案 0 :(得分:4)

发生的事情是pass让你的函数返回None