ファイルを結合し、重複を削除し、指定列の条件を満たすデータ数を数えたい。

前提

ディレクトリの中に同じフォーマットのtsvファイルがあります。1行目にヘッダーがあり、2行目からデータが続いていくような一般的なフォーマットです。Pythonで処理を行っています。

実現したいこと

Pythonで、

ディレクトリにある同じ名前のファイルを取り出す。

同じ名前のファイルを縦方向に結合させる。(1行目のヘッダーは残し、2行目以降は結合元のヘッダーは入れない)

結合したファイルを参照し、ある指定列で重複しているデータがあれば余分な行を削除し一行のみにする

重複がなくなったデータを参照し、別のある指定列において特定の条件を満たすデータ数を数える。

を行いたいです。

発生している問題・エラーメッセージ

現在、このエラーが出ます。

KeyError: Index(['app_num'], dtype='object')

app_numは重複を確認して削除する際に参照する行のヘッダーです。

また、

Python

#重複を確認ic.duplicated() #重複を削除sindf = ic.drop_duplicates()

ここの引数を入れずに走らせると、以下のエラーが出ました。

KeyError: 'acai_app_dt'

一番下にこのKeyErrorが出ます。これはある指定列のヘッダーの名前です。ソースコードの一番下の3行に書いてあります。どこで、そしてなぜヘッダーが消えて?しまったのでしょうか。

該当のソースコード

Python

import os import pandas as pd import glob os.chdir(r"C:\case study\after defrost") #目的ファイルのディレクトリがあるパス # パスで指定したファイルの一覧をリスト形式で取得. tsv_files = glob.glob('*/JPWAP/upd_pmac_g_app_case.tsv') #読み込むファイルのリストを表示for a in tsv_files: print(a) #csvファイルの中身を追加していくリストを用意data_list = [] #読み込むファイルのリストを走査for file in tsv_files: data_list.append(pd.read_csv(file,delimiter='\t')) #リストを全て結合cn = pd.concat(data_list) cn.to_csv("connected.tsv") hoge = pd.read_csv('connected.tsv',delimiter='\t') # データフレーム型に格納ic = pd.DataFrame(hoge) #重複を確認ic.duplicated('app_num') #重複を削除sindf = ic.drop_duplicates('app_num') # CSVで保存sindf.to_csv('upd_pmac_g_app_case.tsv', encoding='utf-8-sig') df= pd.read_csv('upd_pmac_g_app_case.tsv',delimiter='\t') apdt = ((df['acai_app_dt'] >= 20200701) & (df['acai_app_dt'] <=20200731)).sum() #任意の列において、ある範囲にある数値が何個あるか数える。print('num_data='+str(apdt)) #各ファイルで条件を満たすものがどれだけあるかを計算

試したこと

結合や重複の際に使った関数にオプションの引数を入れたり抜いたりしましたが、変わりませんでした。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

コメントを投稿

0 コメント