2
對不起,如果之前詢問過,找不到確切的問題。熊貓在每組中找到滿足條件的最大值
我尋找大熊貓的最有效的方法來進行以下操作:
假設我們有如下表:
ID SUB_ID COND
1 101 1 1
2 101 2 1
3 101 3 1
4 102 1 1
5 102 2 0
6 103 1 0
7 103 2 0
8 103 3 0
9 103 4 0
基本上,每個「ID」我們希望得到最大的「SUB_ID」,,因爲COND是1。理想情況下,我們希望將該值添加到該ID的每一行作爲新列。如果沒有該ID的行滿足條件,我們想補充(而不是零)0
得到的數據幀將是:只有
ID SUB_ID COND MAX_SUB_ID
1 101 1 1 3
2 101 2 1 3
3 101 3 1 3
4 102 1 1 1
5 102 2 0 1
6 103 1 0 0
7 103 2 0 0
8 103 3 0 0
9 103 4 0 0
我能想出現在最好的辦法是選擇COND = 1的行,然後在該數據幀上執行groupby以獲取最大子ID,然後將其加回到主數據幀。在此之後,我可以將空值更改回0.
df_true = df[df['COND']==1]
max_subid_true=df_true['SUB_ID'].groupby(df_true['ID']).max()
joined_df = df.merge(pd.DataFrame(max_subid_true),how='left',left_on='ID',right_index=True)
joined_df.loc[pd.isnull(joined_df['SUB_ID_y']),'SUB_ID_y']=0
有關這樣做的其他想法?
很不錯的!謝謝 – user4505419