2017-11-21 19 views
2

複数のContent-childがあります。 しかし、結果は1を1ずつ返します。1行1列の代わりにすべてを返す

element1 = driver.find_element_by_xpath("//div[@id='Content']") 
element2 = driver.find_elements_by_xpath("//div[@class='Content-child']") 

for element3 in element2: 
    element3_list = element3.text 

    df = pd.DataFrame(element3_list, columns=['a','b','c']) 
    pd.set_option('display.max_colwidth', -1) 
    print(tabulate(df, headers='keys', tablefmt='psql')) 

---- RESULT ----私が期待したもの

+--+----+----+----+ 
| | a | b | c | 
+---|----+----+----+ 
| 0 | 3 | 1 | 21 | 
+---+----+----+----+ 

+--+----+----+----+ 
| | a | b | c | 
+---|----+----+----+ 
| 0 | 5 | 8 | 41 | 
+---+----+----+----+ 

+--+----+----+----+ 
| | a | b | c | 
+---|----+----+----+ 
| 0 | 3 | 1 | 21 | 
+---+----+----+----+ 
| 1 | 5 | 8 | 41 | 
+---+----+----+----+ 

それがループ間違いですか、それを組み合わせることができます任意のモジュールがありましたか?

答えて

1

は、私たちはありがとうforループ

l=[] 
for element3 in element2: 
    element3_list = element3.text 

    l.append(pd.DataFrame(element3_list, columns=['a','b','c'])) 

df=pd.concat(l).reset_index(drop=True) 
1

for element3 in element2ループの各ステップで新しいデータフレームを作成します。次に、作成したデータフレームを印刷します。あなたの代わりに何をすべき

は、ループを出後append方法、およびfinaly印刷結果を使用して、既存のデータフレームに、各element3アペンド行に対して、ループの前に(おそらく空の)データフレームを1を作成することです。

ところでpd.concatメソッドを使用して、上記のリンクの最後に例を見てください。これはあなたのニーズに合ったものでなければなりません。

+0

listにあなたのdfを復元してみましょう。ちょうどループの問題。 –

関連する問題