概要
pandasで数値の平均や、最小値、最大値を取得する例はよく見つかりますが、
グループを作ってそこに対して処理することも多かったので自分の備忘録がわりにまとめ。
何番煎じだと突っ込まれそうな気もしますが・・・
必要なもの
- python 3.7.2
- pandas
- numpy
動作確認にはJupyterNotebookを使っています。
処理内容
使用データはJADERの有害事象のデータを使用しています。
import pandas as pd
import numpy as np
reacs=pd.read_csv('reac.csv',dtype='str',encoding='shift-jisx0213')
まずは症例ごとにユニークになるように 識別番号でグルーピング
groupCaseNo=reacs.groupby('識別番号')
識別番号ごとにグルーピングされているので、以下のようにgroups
を使用すればグルーピングしているキーを取得できる。
groupCaseNo.groups.keys()
以下のようにすることでそれぞれのキー単位で処理ができる。
get_group
はグルーピングのキーを使うことで中身を取得することができます。
for case in groupCaseNo.groups.keys():
print(groupCaseNo.get_group(case))
以下のようにapply
を使用することで関数を使って文字列を結合したりすることが可能です。
lambdaを使って無名関数も可能ですが、込み入ったことをするときは別途関数を作成することになるかと思います。
def getRecordAe(data):
return data.有害事象連番+':'+data.有害事象
groupCaseNo.apply(getRecordAe)