缩小每个主题多行到每个主题一行的数据帧

时间:2018-10-25 13:53:07

标签: python pandas dataframe

假设我有一个数据框,每个主题有多行。每一行都是受试者经历的不良事件以及标记,该标记表明该特定不良事件是相关的,严重的还是严重的:

subject_id    related   severe   sae
05-218         True     False    False
05-218         True     True     False
05-218         False    False    False
05-010         False    False    False
05-010         True     False    False
05-010         True     False    False
05-010         False    False    False

我想要最终得到的是一个结果数据框,每个主题有一行,表明该主题曾经是否经历过相关,严重或严重性。结果是这样的:

subject_id    related    severe   sae
05-218         True      True     False
05-010         True      False    False

我对要做的事情感到困惑!任何帮助表示赞赏。

谢谢!

2 个答案:

答案 0 :(得分:3)

使用GroupBy.any

df = df.groupby('subject_id', sort=False).any()
print (df)
            related  severe    sae
subject_id                        
05-218         True    True  False
05-010         True   False  False

df1 = df.groupby('subject_id', sort=False).any().reset_index()
print (df1)
  subject_id  related  severe    sae
0     05-218     True    True  False
1     05-010     True   False  False

答案 1 :(得分:3)

使用max

df.groupby('subject_id',as_index=False).max()
Out[357]: 
  subject_id  related  severe    sae
0     05-010     True   False  False
1     05-218     True    True  False