【发布时间】:2020-06-18 13:20:24
【问题描述】:
我使用 Pandas 库将一些代码从 SAS 重写为 Python。
我有这样的代码,但我不知道该怎么处理它?
你能帮帮我吗,因为它太复杂了,我做错了。我更改了列的名称(用于加密敏感数据)
这是 SAS 代码:
proc sql;
create table &work_lib..opk_do_inf_4 as
select distinct
*,
min(kat_opk) as opk_do_inf,
count(nr_ks) as ilsc_opk_do_kosztu_infr
from &work_lib..opk_do_inf_3
group by kod_ow, kod_sw, nr_ks, nr_ks_pr, nazwa_zabiegu_icd_9, nazwa_zabiegu
having kat_opk = opk_do_inf
;
quit;
这是我在 Pandas 中的尝试:
df = self.opk_do_inf_3() -> create DF using other function
df['opk_do_inf'] = df.groupby(by=['kod_ow', 'kod_sw', 'nr_ks', 'nr_ks_pr', 'nazwa_zabiegu_icd_9', 'nazwa_zabiegu'])['kat_opk'].min()
df['ilsc_opk_do_kosztu_infr'] = df.groupby(by=['kod_ow', 'kod_sw', 'nr_ks', 'nr_ks_pr', 'nazwa_zabiegu_icd_9', 'nazwa_zabiegu'])['nr_ks'].count()
df_groupby = df.groupby(by=['kod_ow', 'kod_sw', 'nr_ks', 'nr_ks_pr', 'nazwa_zabiegu_icd_9', 'nazwa_zabiegu']).filter(lambda x: x['kat_opk']==x['opk_do_inf'])
df = df_groupby.reset_index()
df = df.drop_duplcates()
return df
【问题讨论】:
-
是否希望按照 SAS 的方式将计算出的 MIN() 和 COUNT() 值重新合并到所有详细观察结果中?还是您只想每个 BY 组进行一次观察?
标签: python sql count sas pandas-groupby