この記事の内容
- csvファイルをいくつかのグループに分けて処理する
##まえがき
卒業研究の過程で、そこそこ大きめのcsvファイルを処理する必要があった。具体的には、id列の値にしたがって行をグループ分けし、各グループの中でdistance列が最小の行を取得するという作業。以下ではその時に用いた手法を記す。
##本題
コードは以下の通り。
import pandas as pd
data = pd.read_csv("元データファイルへのパス")
df = pd.DataFrame(columns=data.columns)
###これが最終的な出力ファイルになる。列名はdataと同じで、この段階では空の状態。
dic = {}
for name,group in data.groupby('id'):
dic[name] = group
list = dic['id'].unique()
for i in list:
k = dic[i]
l = k['distance'].idxmin()
m = data.iloc[l:l+1,:]
df = df.append(m)
df.to_csv("保存したいディレクトリのパス")
もっと簡潔なコードがあるような気がするが…
元データの列名を引き継いだDataFrameの作成や、ある列の値が最小となる行番号の取得など、結構いろいろな場面で役立つ。