LoginSignup
0
1

More than 3 years have passed since last update.

pandasのgroupbyで文字列の操作

Posted at

概要

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)
0
1
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
0
1