2017-04-10 1 views
0

データフレームのように特定の単語を得る:Pythonのデータフレーム

stop_wd=['the','a'] 
df2=pandas.DataFrame({'col1':[1,3,4], 
         'col2':['the future','a dog','data frame']}) 

df2

col1 col2 
0 1 the future 
1 3 a dog 
2 4 data frame 

私が取得したい結果:

col1 col2 
0 1 future 
1 3 dog 
2 4 data frame 

stop_wd=['the','a']のでthe futureを削除する必要がありますがthea dogaを削除する必要があります。 data frameは何も削除しません。

は私がapplyを使用しよう:

def word(x,stop_wd=stop_wd): 
    for r in stop_wd: 
     if r in x.split(): 
      x=x.split(' ').remove(r) 
      return x 
     else: 
      return x 
df2.col2=df2.col2.apply(word) 

が、これは動作しません。私は、この結果を得る:

col1 col2 
    0 1 None 
    1 3 a dog 
    2 4 data frame 

答えて

1

あなたの答えはほぼあります - あなたのwordの機能はちょっと間違っています。

非常に読みやすく、テキストを1度だけ分割するという利点があります(ソリューションでは、stop_wdリストのすべての単語に対して.split()と呼んでいます)。

def word(text, stop_wd=stop_wd): 
    return ' '.join([word for word in text.split(' ') if word not in stop_wd]) 
1

あなたの外観は、すべての可能性が試される前に

import pandas 
stop_wd=['the','a'] 
df2=pandas.DataFrame({'col1':[1,3,4], 
         'col2':['the future','a dog','data frame']}) 

def word(x,stop_wd=stop_wd): 
    for r in stop_wd: 
     if r in x.split(): 
      x=x.replace(r,'') 
    return x 

df2.col2=df2.col2.apply(word) 

は、私はあなたが

を探していると思うものです

future 
dog 
data frame 

の出力を生成する終了します

関連する問題