根据聚合值从Dataframe中选择行

时间:2017-04-26 19:17:30

标签: python pandas dataframe

我有一个患者信息的数据框,由患者/访问密钥。我想为只有一次就诊的患者选择所有患者/就诊数据。一般情况下,我希望能够根据该数据的任何分组和聚合值选择数据。

我目前的做法是合并,但这很麻烦。

dfg = dfmn.groupby(['pt_studyid']).size().to_frame("count").reset_index()
dfgu = dfg[dfg['count']>1]
dfmn_filt = dfgu.merge(dfmn, on=['pt_studyid']).drop('count', 1)

有更清洁的方式吗?

1 个答案:

答案 0 :(得分:0)

使用filter对象

DataFrameGroupBy方法
dfmn.groupby('pt_studyid').filter(lambda x: len(x) > 1)

<强> 实施例

dfmn = pd.DataFrame(dict(pt_studyid=list('AAAABBBCDEFFF'), val=range(13)))
dfmn

   pt_studyid  val
0           A    0
1           A    1
2           A    2
3           A    3
4           B    4
5           B    5
6           B    6
7           C    7
8           D    8
9           E    9
10          F   10
11          F   11
12          F   12

过滤

print(dfmn.groupby('pt_studyid').filter(lambda x: len(x) > 1))

   pt_studyid  val
0           A    0
1           A    1
2           A    2
3           A    3
4           B    4
5           B    5
6           B    6
10          F   10
11          F   11
12          F   12