質問: 使用言語Python 現在for文を使用し、リストに格納されているデータの回数だけ処理を繰り返したいと考えています。 実行する処理として、リストの一つ目のデータとCSVファイルのデータフレーム'name'の内容と文字列が一部一致した行だけを取得し、 その後、取得した行から必要なデータを取得する。 次のループでは2つ目のデータでCSVファイルのデータフレーム'name'の内容と文字列が一部一致した行だけを取得・・・と繰り返したい。 以下例プログラム ``` import pandas as pd csv_data=pd.read_table(~~~) #csvファイルから読み込む > ↓csvファイルの内容 > name ido keido > 1 北海道 xx.xx xx.xxx > 2 東京都 xx.xx xx.xxx > 3 青森県 xx.xx xx.xxx > 4 秋田県 xx.xx xx.xxx > 5 ・ ・ ・ > 6 ・ ・ ・ > 7 ・ ・ ・ list=['青森','大分','東京',・・・] #複数データがあると考えていただけると for idokeido in list: csv_data2=csv_data[csv_data['name'].str.contains(idokeido)] #↑listのデータとデータフレームnameが部分一致した行を抜き出したい data=csv_data2[['ido','keido']] #↑抜き出した行からidoとkeidoを取得 print(data) ``` 実行しても、思い通りのido,keidoを取得することできず困っております。 拙い文章でわかりにくいと思いますが、お力を貸していただけると恐縮です。
回答: ほぼそのままですが、 出来てそうに見えるけど、問題は何だったのでしょう。 ``` $cat in.csv name,ido,keido 北海道,11,55 東京都,22,66 青森県,33,77 秋田県,44,88 ``` ``` #!/usr/bin/env python3 import pandas as pd csv_data = pd.read_csv('in.csv') names = ['秋田', '東京'] for name in names: row = csv_data[csv_data['name'].str.contains(name)] data = row[['ido', 'keido']] print(data) ``` ``` $ ./a.py ido keido 3 44 88 ido keido 1 22 66 ```