0

私はPythonを使用しています。このようなデータフレームには、患者ID、1から22までのhour_measure、および他の患者の測定値を参照するsub_idが含まれています

  subject_id  |   hour_measure     heart rate     |  urinecolor |  blood pressure  
     --------------------------------------------------------                
        3        |  1                   40        |  red        |  high
        3        |  2                   60        |  red        |  high
        3        |  ..                  ..        |  ..         |  ..
        3        |  22                  90        |  red        |  high

        4        |  3                   60        |  yellow     |  low
        4        |  3                   60        |  yellow     |  low  
        4        |  22                  90        |  red        |  high

数値特徴の最大最小スキューなどで sub_id 測定をグループ化し、カテゴリの最初と最後の値をグループ化したい

私は次のコードを書きます

df= pd.read_csv(path)
df1 = (df.groupby(['subject_id','hour_measure'])
        .agg([ 'sum','min','max', 'median','var','skew']))
f = lambda x: next(iter(x.mode()), None)
cols = df.select_dtypes(object).columns
df2 = df.groupby(['subject_id','hour_measure'])[cols].agg(f)
df2.columns = pd.MultiIndex.from_product([df2.columns, ['mode']])
print (df2) 
df3 = pd.concat([df1, df2], axis=1).unstack().reorder_levels([0,2,1],axis= 1)
print (df3)          
df3.to_csv("newfile.csv")

1時間ごとにグループ化されます

サブジェクトIDのみでグループ化してみます

df1 = (df.groupby(['subject_id'])
        .agg([ 'sum','min','max', 'median','var','skew']))

また、同じ出力が得られ、次のように1時間ごとに統計を計算します

     subject_id  |     heart rate_1     |  heartrate_2 .... 
     --------------------------------------------------------                
                |  min    max     mean  | min   max   mean ....               
        3
        4

出力を次のようにしたい

     subject_id  |     heart rate        |  repiratotry rate  |urine color
     --------------------------------------------------------                
                 |  min  |  max   | mean  | min |  max |  mean ..|. first |  last 
        3            50     60      55     40     65      20     | yellow |  red

コードを編集して必要な出力を得る方法を教えてください。

4

1 に答える 1