2017-07-27 2 views
0

私はいくつかのウェブページを通してキーワードを探しています。もう一度おねがいします。silent error handlingで私を助けてくれてありがとうございます!あなたが見ることができるように、私はdf.dataに保存されているURLを要求し、mykeywordsからキーワードを検索し、extra_columnにバイナリ結果を格納テキスト内のキーワードを検索し、見つかったキーワードごとにデータフレーム列を作成しますか?

# this is basically what I do 
import pandas as pd 
import requests 


data = [{"URLs" : "https://www.mercedes-benz.de", "electric" : 1}, 
     {"URLs" : "https://www.audi.de", "electric" : 0}, 
     {"URLs" : "https://ww.audo.de", "electric" : 0}, 
     {"URLs" : "NaN", "electric" : 0}] 


def contains_keywords(link, keywords): 
    try: 
     output = requests.get(link).text 
     return int(any(x in output for x in keywords)) 
    except: 
     return "Wrong/Missing URL" 


df = pd.DataFrame(data) 
mykeywords = ('car', 'vehicle', 'automobile') 
df['extra_column'] = df.URLs.apply(lambda l: contains_keywords(l, mykeywords)) 

:私はあなたの例をあげます。スクリプトは、基本的に次のようになります。

#       URLs electric  extra_column 
# 0 https://www.mercedes-benz.de   1     1 
# 1   https://www.audi.de   0     1 
# 2    https://ww.audo.e   0     0 
# 3       NaN   0 Wrong/Missing URL 

これまでのところ、私はキーワードが見つかった場合のみ知っています。しかし、mykeywordsの各キーワードに対してcontains_keywords()を個別に実行することなく、どのキーワードを見つけるかを知りたい。キーワードごとに新しい列を作成し、結果(1 =キーワードが見つかりました)をDataFrameに保存する方法はありますか?つまり、それぞれのキーワードに対して追加の列がdfに必要です。

+1

「私が見つけたキーワードを見つけたいのですが...」とは、_each_キーワードの 'df'に追加の列が必要なことを意味しますか? –

+0

こんにちはドミトリー、まさに私が欲しいものです!各キーワードの列。それは可能ですか?私は知っているすべてを試しましたが、これまでにはうまくいきませんでした。申し訳ありませんが、私の質問は明確ではありません。私はそれに応じてそれを編集します。 – Rachel

答えて

1
import pandas as pd 
import requests 


data = [{"URLs" : "https://www.mercedes-benz.de", "electric" : 1}, 
     {"URLs" : "https://www.audi.de", "electric" : 0}, 
     {"URLs" : "https://ww.audo.de", "electric" : 0}, 
     {"URLs" : "NaN", "electric" : 0}] 


def contains_keywords(link, keyword): 
    try: 
     output = requests.get(link).text 
     return int(keyword in output) 
    except: 
     return "Wrong/Missing URL" 


df = pd.DataFrame(data) 
mykeywords = ('car', 'vehicle', 'automobile') 
for keyword in mykeywords: 
    df[keyword] = df.URLs.apply(lambda l: contains_keywords(l, keyword)) 
+0

うわー!これは超クールです!私はちょうどまだどのように理解していない。 'df.column'として' keyword'を直接呼び出すことができます。超かっこいい!ありがとうございました! – Rachel

+1

あなたは歓迎です、レイチェル=)幸運。 –

+0

こんにちは@Dmitriy Fialkovskiy、ちょうど最後の簡単な質問:私は 'forloop'が与えられたので、私は 'myキーワード'の各 'キーワード'に 'containains_keywords'関数を適用することを理解します。この場合、3回。これはまた、 'int(任意の(xのキーワードのxの出力はx))'を一度に検索するのに3倍かかることを意味しますか? – Rachel

関連する問題