1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

csvのグループ分けと最小値の取得(pandas)

Last updated at Posted at 2020-10-27

この記事の内容

  • 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の作成や、ある列の値が最小となる行番号の取得など、結構いろいろな場面で役立つ。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?