🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

717閲覧

データ取得からエクセルに格納

yusuke_0923

総合スコア3

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2021/03/29 15:18

本当はエクセルに1列で格納したいんですが、うまい方法を教えてください。
真似しながらやってるので、以下のようにコーディングしています。

python

1# このリストに格納していく 2post_address = [] 3other = [] 4 5# 郵便番号と住所を格納 6for k,v in enumerate(address_list): 7 8 if k % 2 == 0: 9 post_address.append(v.get_text().replace(" ","")) 10 else: 11 other.append(v.get_text().replace(" ","")) 12 13df = pd.DataFrame({'住所':post_address,'その他':other})

これだと当然2列になります。
下のやつを1列に入れたいんです。
###コマンドプロンプト

C:\test2>python sub0322.py 〒206-0032東京都多摩市南野2-31-7 〒192-0355東京都八王子市堀之内3-3-19 〒206-0812東京都稲城市矢野口1633-1  〒206-0824東京都稲城市若葉台1-55アクロスプラザ若葉台イースト 〒194-0021東京都町田市中町2-17-20 〒191-0003東京都日野市日野台2-41-5 〒193-0832東京都八王子市散田町5-9-8 〒192-0351東京都八王子市東中野11-14 〒192-0914東京都八王子市片倉町484-1 〒194-0044東京都町田市成瀬8-2-6 〒242-0003神奈川県大和市林間1-15-28 〒252-0211神奈川県相模原市中央区宮下本町2-27-20 〒243-0436神奈川県海老名市扇町1-1  〒252-0803神奈川県相模原市南区相模大野3-1-7エピカビルB1 〒243-0303神奈川県愛甲郡愛川町中津724 〒246-0021神奈川県横浜市瀬谷区二ツ橋町309-1 〒252-0143神奈川県相模原市緑区橋本8-2-1 ラ・フロール別館内 〒252-0234神奈川県相模原市中央区共和3-7-9  〒252-1136神奈川県綾瀬市寺尾西3-6-1 〒242-0015神奈川県大和市下和田778 〒252-0226神奈川県相模原市中央区陽光台5-5-2 〒252-0001神奈川県座間市相模が丘4-2-45

###全文

python

1# 必要なモジュールのインポート 2from bs4 import BeautifulSoup 3import urllib.error,os 4import urllib.request 5import time,datetime 6import pandas as pd 7import numpy as np 8import openpyxl 9 10# 店舗ごとのURLの番号 11shop_list = ['01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','20','21','22'] 12 13# 共通のURL 14url_list = ['https://www.y-minmin.com/shop#a{0}'.format(shop) for shop in shop_list] 15 16# おまじないと思っておく。OSごとに異なる。 17ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100' 18 19 20req = urllib.request.Request(url_list[0], headers={'User-Agent':ua}) 21html = urllib.request.urlopen(req) 22 23soup = BeautifulSoup(html,("html.parser")) 24 25# 対象のページのHTMLから郵便番号と住所を抽出して取得 26address_list = soup.select('.table-default tr:nth-child(1) td') 27 28for k,v in enumerate(address_list): 29 print(v.get_text().replace(" ","")) 30 31# このリストに格納していく 32post_address = [] 33other = [] 34 35# 郵便番号と住所を格納 36for k,v in enumerate(address_list): 37 38 if k % 2 == 0: 39 post_address.append(v.get_text().replace(" ","")) 40 else: 41 other.append(v.get_text().replace(" ","")) 42 43df = pd.DataFrame({'住所':post_address,'その他':other}) 44 45# 取得したデータからExcelファイルを生成 46df.to_excel('Minmin_Address.xlsx',encoding='shift_jis',index=False) 47

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

単純に以下のようにやればできると思います。

python

1# このリストに格納していく 2address = [] 3 4# 郵便番号と住所を格納 5for v in address_list: 6 address.append(v.get_text().replace(" ","")) 7df = pd.DataFrame({'住所':address})

投稿2021/03/29 17:16

ppaul

総合スコア24670

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

初めから結合した配列で作ればいいというのは回答済みなので
途中までが前提条件だとして

post_addressとotherを作るまでが前提条件だとすると

python

1df=pd.DataFrame(data=pd.Series(post_address) + pd.Series(other),columns=['住所'])

df = pd.DataFrame({'住所':post_address,'その他':other})までが前提条件だとすると
まぁさっきと同じだけど

python

1df=pd.DataFrame(data=df['住所'] + df['その他'],columns=['住所'])

ということなのかしら

投稿2021/03/29 21:33

xail2222

総合スコア1508

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問