前提
ディレクトリの中に同じフォーマットのtsvファイルがあります。1行目にヘッダーがあり、2行目からデータが続いていくような一般的なフォーマットです。Pythonで処理を行っています。
実現したいこと
Pythonで、
ディレクトリにある同じ名前のファイルを取り出す。
↓
同じ名前のファイルを縦方向に結合させる。(1行目のヘッダーは残し、2行目以降は結合元のヘッダーは入れない)
↓
結合したファイルを参照し、ある指定列で重複しているデータがあれば余分な行を削除し一行のみにする
↓
重複がなくなったデータを参照し、別のある指定列において特定の条件を満たすデータ数を数える。
を行いたいです。
発生している問題・エラーメッセージ
現在、このエラーが出ます。
KeyError: Index(['app_num'], dtype='object')
app_numは重複を確認して削除する際に参照する行のヘッダーです。
また、
Python
1#重複を確認 2ic.duplicated() 3 4#重複を削除 5sindf = ic.drop_duplicates()
ここの引数を入れずに走らせると、以下のエラーが出ました。
KeyError: 'acai_app_dt'
一番下にこのKeyErrorが出ます。これはある指定列のヘッダーの名前です。ソースコードの一番下の3行に書いてあります。どこで、そしてなぜヘッダーが消えて?しまったのでしょうか。
該当のソースコード
Python
1import os 2import pandas as pd 3import glob 4 5os.chdir(r"C:\case study\after defrost") #目的ファイルのディレクトリがあるパス 6 7# パスで指定したファイルの一覧をリスト形式で取得. 8tsv_files = glob.glob('*/JPWAP/upd_pmac_g_app_case.tsv') 9 10#読み込むファイルのリストを表示 11for a in tsv_files: 12 print(a) 13 14#csvファイルの中身を追加していくリストを用意 15data_list = [] 16 17#読み込むファイルのリストを走査 18for file in tsv_files: 19 data_list.append(pd.read_csv(file,delimiter='\t')) 20 21#リストを全て結合 22cn = pd.concat(data_list) 23 24cn.to_csv("connected.tsv") 25 26hoge = pd.read_csv('connected.tsv',delimiter='\t') 27 28# データフレーム型に格納 29ic = pd.DataFrame(hoge) 30 31#重複を確認 32ic.duplicated('app_num') 33 34#重複を削除 35sindf = ic.drop_duplicates('app_num') 36 37 38# CSVで保存 39sindf.to_csv('upd_pmac_g_app_case.tsv', encoding='utf-8-sig') 40 41df= pd.read_csv('upd_pmac_g_app_case.tsv',delimiter='\t') 42apdt = ((df['acai_app_dt'] >= 20200701) & (df['acai_app_dt'] <=20200731)).sum() #任意の列において、ある範囲にある数値が何個あるか数える。 43print('num_data='+str(apdt)) #各ファイルで条件を満たすものがどれだけあるかを計算
試したこと
結合や重複の際に使った関数にオプションの引数を入れたり抜いたりしましたが、変わりませんでした。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。

回答1件
あなたの回答
tips
プレビュー