我有一个患者信息的数据框,由患者/访问密钥。我想为只有一次就诊的患者选择所有患者/就诊数据。一般情况下,我希望能够根据该数据的任何分组和聚合值选择数据。
我目前的做法是合并,但这很麻烦。
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)
有更清洁的方式吗?
答案 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