gpt4 book ai didi

python - 在 Pandas 中添加一个新列作为现有列的最大值

转载 作者:太空宇宙 更新时间:2023-11-03 15:55:25 25 4
gpt4 key购买 nike

我需要将下面的 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 转换为 pandas。如果有人做过请告诉我。

最佳答案

使用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

关于python - 在 Pandas 中添加一个新列作为现有列的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40850912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com