実現したいこと
指定した列のcsvファイルの中から、文字を検索し(テキストデータから読み取り)一致したときに、その行を持ってくる方法を知りたいです。
具体的には
csvファイル(member.csv)
no,month,blood
1,5,A
1,1,B
1,5,A
2,2,C
2,7,D
3,12,A
4,11,D
テキストデータ(file.txt)
1
4
出力結果のcsv(result.csv)
no,month,blood
1,5,A
1,1,B
1,5,A
4,11,D
といったCSVファイルがある場合に列名「no」について、値が「1」と「4」のものを出力する方法が知りたいです。
実際に、扱うデータはcsvファイルが200万行程度で、検索に扱うテキストデータは200行ほどです。
私が扱うデータが多いため、csv処理のライブラリはpandasではなく、daskという高速処理が可能なライブラリを使用しています。
また、pandasを用いた方法も教えていただけると幸いです。
発生している問題・エラーメッセージ
出力結果のcsv(result.csv) no,month,blood 1,5,A 1,1,B 1,5,A 4,11,D ではなく、 no,month,blood 4,11,D となっています。
該当のソースコード
Python
1# coding: shift-jis 2 3import dask.dataframe as dd 4 5with open('file.txt', 'r') as f: 6 kw_list1 = f.read().split("\n") 7 8 9# ========================================================================================== 10# ヘッダーの型指定(処理の高速化に必要) 11dtype_dict={'no':'object', 12 'month':'object', 13 'blood':'object',} 14# ========================================================================================== 15 16 17# ========================================================================================== 18 19 20# マスタの読み込み 21member = dd.read_csv("member.csv", encoding='utf-8',engine='python', dtype=dtype_dict) 22 23for list in kw_list1: 24 member_list = member[member['no'] == str(list)] 25 26 27 print(member_list ) 28 29member_list .to_csv('result.csv',header=True,single_file = True,index=False) 30 31#member.csv 32no,month,blood 331,5,A 341,1,B 351,5,A 362,2,C 372,7,D 383,12,A 394,11,D 40 41 42#file.txt 431 444 45 46 47 48
回答3件
あなたの回答
tips
プレビュー