我需要将以下SAS代码转换为python pandas。我没有得到我所尝试的确切结果。
以下SAS代码转换为pandas:
proc sql;
create table t1 as
select
c1, c2, c3, c4, c5, flag, max(flag) as MAX_flag
from t1
group by c1, c2, c3, c5;
run;
我试过这样的:它为这个例子工作,但是对于大数据集,我得到了不匹配。
import pandas as pd
import numpy as np
df = pd.DataFrame({'A':['z','y','x','x','z','y','z','y','x','z',],
'B':[0,1,2,0,1,2,0,1,2,0],
'ID':[0,1,0,1,0,1,0,2,3,4]})
df=df.sort_values(['A','B','ID'], ascending=[True,True,False])
df.loc[:,'Max']=df.groupby(['A','B'])['ID'].cummax()
我想将SAS转换为熊猫。如果有人这样做,请告诉我。
答案 0 :(得分:1)
使用transform以行方式返回结果。
In [27]: df
Out[27]:
A B ID
0 z 0 0
1 y 1 1
2 x 2 0
3 x 0 1
4 z 1 0
5 y 2 1
6 z 0 0
7 y 1 2
8 x 2 3
9 z 0 4
In [28]: df['max'] = df.groupby(['A', 'B'])['ID'].transform(np.max)
In [29]: df
Out[29]:
A B ID max
0 z 0 0 4
1 y 1 1 2
2 x 2 0 3
3 x 0 1 1
4 z 1 0 0
5 y 2 1 1
6 z 0 0 4
7 y 1 2 2
8 x 2 3 3
9 z 0 4 4