有這個資料框
state in out
0 case_1 1 -5
1 case_2 0 -1
2 case_2 -1 8
3 case_1 -2 5
4 case_2 -2 1
我需要使用來自“in”的值創建一個附加列,這些值對應于每個“狀態”(case_1,case_2)的“out”中的最大值。
state in out new
0 case_1 1 -5 -2
1 case_2 0 -1 -1
2 case_2 -1 8 -1
3 case_1 -2 5 -2
4 case_2 -2 1 -1
uj5u.com熱心網友回復:
嘗試:
df['new'] = df.loc[df['state'].map(df.groupby('state')['out'].idxmax()), 'in'].values
print(df)
# Output:
state in out new
0 case1 1 -5 -2
1 case2 0 -1 -1
2 case2 -1 8 -1
3 case1 -2 5 -2
4 case2 -2 1 -1
uj5u.com熱心網友回復:
讓我們試試 transform
df['new'] = df.set_index('in').groupby('state')['out'].transform('idxmax').values
df
Out[99]:
state in out new
0 case1 1 -5 -2
1 case2 0 -1 -1
2 case2 -1 8 -1
3 case1 -2 5 -2
4 case2 -2 1 -1
uj5u.com熱心網友回復:
另一種使用merge函式的方法:
new = pd.merge(df,df.groupby('state',as_index=False)['out'].max()).drop('out',axis=1).rename({'in':'new'},axis=1)
>>> pd.merge(df,new,on='state',how='left')
state in out new
0 case1 1 -5 -2
1 case2 0 -1 -1
2 case2 -1 8 -1
3 case1 -2 5 -2
4 case2 -2 1 -1
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/392728.html
