私はウェブサイトからいくつかのテーブルを抽出することに興味があり、テーブルが存在するリンクのリストを定義しました。各リンクには同じ数のカラムを持ついくつかのテーブルがあります。以下のように、私はパンダread_html()機能を持つ単一のテーブルにリンクのリストからすべてのテーブルを抽出しています:pandas read_html()関数を読み込んでいるURLを新しい列に保存するにはどうすればいいですか?
links = ['url1.com','url2.com',...,'urlN.com']
import multiprocessing
def process_url(link):
return pd.concat(pd.read_html(link), ignore_index=False) # add in a new column the link where the table was extracted..
p = multiprocessing.Pool()
df = pd.concat(p.map(process, links), ignore_index=True)
私はそれを保存するために、各テーブルの産地リンク(すなわちキャリーアウトするために参考になることに気づきました新しい列には、最終的な表の行にリンクがあります)。したがって、私の質問は、新しい列にパンダread_html()参照リンクを実行する方法ですか?例えば
:
表1及び2はurl1.comである:
TABLE1:
fruit, color, season, price
apple, red, winter, 2$
watermelon, green, winter, 3$
orange, orange, spring, 1$
表2:
fruit, color, season, price
peppermint, green, fall, 3$
pear, yellow, fall, 4$
表Aで3生活in url2.com
fruit, color, season, price
tomato, red, fall, 3$
pumpking, orange, fall, 1$
私は新しい列に各テーブルが抽出された場所を保存したいと思います。新しい列の表の参照)を行う:
fruit, color, season, price, link
0 apple, red, winter, 2$, url1.com
1 watermelon, green, winter, 3$, url1.com
2 orange, orange, spring, 1$, url1.com
3 peppermint, green, fall, 3$, url1.com
4 pear, yellow, fall, 4$, url1.com
5 tomato, red, fall, 3$, url2.com
6 pumpking, orange, fall, 1$, url2.com
別の例は、このテーブル1と表2はurl1.comであることに注意し、「図」です。一方、表3はurl2.comにあります。上記の機能を私は別のリンクにあるテーブルから単一のテーブルを作成し、私の目的は、(ちょうどrefereceを節約するために)テーブルが抽出された場所で適合される列を作成することです:
source: url1.com
fruit, color, season, price
apple, red, winter, 2$
watermelon, green, winter, 3$
orange, orange, spring, 1$
source: url1.com
fruit, color, season, price
peppermint, green, fall, 3$
pear, yellow, fall, 4$
----> fruit, color, season, price, link
apple, red, winter, 2$, url1.com
watermelon, green, winter, 3$, url1.com
orange, orange, spring, 1$, url1.com
peppermint, green, fall, 3$, url1.com
pear, yellow, fall, 4$, url1.com
tomato, red, fall, 3$, url2.com
source: url2.com pumpking, orange, fall, 1$, url1.com
fruit, color, season, price
tomato, red, fall, 3$
pumpking, orange, fall, 1$
どれでもそれを行う方法のアイデア?
def process_url(link):
return pd.concat(pd.read_html(link), ignore_index=False).assign(link=link)
説明:DataFrame.assign(new_column=expression)はあなたのDFに新しい仮想列を追加します
あなたの質問を明確にすることはできますか?あなたが何を求めているのか分かりません。 「各テーブルの出所リンクを実行する」とはどういう意味ですか? –