[Python初心者]テキストデータから特定の項目だけ抽出してリスト、集合を作る

  • 目的

名前、住所とか書いてある住所録データがあって、名前だけを抽出したリスト、集合を作る

  • データフレームを使う方法

安直には、pandasを使って住所録をデータフレームにして、そこから名前列だけを抽出してリストにする方法がある。たとえばこんな

import pandas
df_jyuusyo = pd.read_csv('うまだっち住所録.txt',encoding='utf-8', header=None)
l_name = list(df_jyuusyo[0]) #0カラム目の名前を抽出したリスト 
s_name = set(df_jyuusyo[0]) #0カラム目の名前を抽出した集合 

いや、これでできるんだけどね。一旦データフレームを作ってそこから
リスト、集合を抽出するていうのが、無駄というかダサい気がする。
(速さ的にはデータフレームはリストよりも高速なんだけれども)
これやってると、一回しか使わないデータフレームが沢山できるので汚くなるし、いちいちデータフレームを命名するのがかったるい。

そこで、テキスト操作の基本に返り、愚直にテキストをopenして一行づつ読み込むというのをやってみます。

  • 住所録をopenし一行ずつ読み込んでn次元リストを作る

import csv
with open('うまだっち住所録.txt', "r") as f:
    reader = csv.reader(f)
    l = [x for x in reader] #内包表記によりリスト生成 
  • お名前列を取得したいので、転置してインデクス[0]で取得します

l_T = [list(x) for x in zip(*l)] #zip関数を使って展開 
l_T[0] #お名前のリスト 
set(l_T[0]) #お名前の集合 

データフレームを使うときよりもややこしいコードになったけど
自分的にはこっちが美しい気がする。

この記事が気に入ったらサポートをしてみませんか?