2017-11-01 22 views
0

特定の親URLに対してn個の子URLを繰り返し取得する大規模なデータセットを使用しています。Pandas:行と列と入力値を動的に追加する

私は当初データを記録するためにExcelを使用しました(実際に私のコードをテストしてください)。しかし、その後、出力データが膨大なので、そのアイデアは価値がないことがわかりました。例えば

: 私は2つのデータセットがあります。

amazon.com: ['a','b','c','d','e'] 
a   : ['k','j','e','f'] 
  • をここで最初のケースでは、amazon.comは、親URLであると値のリストは、それが子供のURLですです。
  • 次の場合、aは親URLになり、値のリストはその子URLになります。

今、私が実際に必要とするものは次のようにデータフレームを取得することです:1が問題今a is the child of amazon.com

を言うショーに値であると想定できる場合

   a b c d e k j f 
amazon.com 1 1 1 1 1 
    a        1 1 1 1 

I」を受賞しています上記のようなデータがあります。私はウェブサイトをクロールすると動的に取得されます。

ので、フローは次のようになります。

Open a website URL 
records the URL (parent URL - this is where we get the URL) 
records all the URLs present in the page (child URL - this is where we get all the child URLs corresponding to the parent URL and hence can populate our list/dictionary and hence the dataframe) 

ようには重複の列ヘッダーが見つからない、気づいたことができます。

誰かが私を助けてくれますか?これは役立つだろう

+1

(https://stackoverflow.com/help/mcve) – kingmakerking

答えて

1

希望:

xx = { 
    'amazon.com': ['a','b','c','d','e'], 
    'a'   : ['k','j','e','f'] 
} 
all_vals = [item for key,items in xx.items() for item in items] 
all_vals = sorted(set(all_vals)) 
df = pd.DataFrame(index=xx.keys(),columns=all_vals) 

def is_exist(idx,col): 
    ret = col in xx[idx] 
    return int(ret) 

for idx in df.index: 
    for col in df.columns: 
     df.loc[idx, col] = is_exist(idx, col) 

df 
+0

おかげで多くのことを[、最小完全、かつ検証例]を提供します!それは私を助けてくれました。 しかし私が正確に必要としているのは、各反復中に '行'と行に関連付けられた '列'が動的に移入することです。これらの各行は、「新しいインデックス」として追加されなければならず、対応する列値は、既存のデータフレーム内で重複してはならない「新しい列ヘッダ」として入力されるべきである。 –

+0

申し訳ありません。しかし、あなたが説明したものは、私が提供したコードに非常に似ています。あなたのニーズに合わせてちょっと修正すればい​​いだけです。 – kingbase

+0

よろしく!ありがとう!遅く返事を申し訳ありませんが、それは私のためのトリックをした... –

関連する問題