我有一個看起來像這樣的熊貓數(shù)據(jù)框:df = pd.DataFrame( [ ['A','one',7], ['A','two',8], ['B','one',9], ['B','two',6]], columns=['ID', 'Type', 'Price']) ID Type Price0 A one 71 A two 82 B one 93 B two 6我想添加一個列,該列是比較每個 ID 中的“價格”的結(jié)果。所以結(jié)果看起來像這樣: ID Type Price Level0 A one 7 low1 A two 8 high2 B one 9 high3 B two 6 low我正在尋找一種有效的方法來做到這一點。謝謝!
2 回答

料青山看我應(yīng)如是
TA貢獻1772條經(jīng)驗 獲得超8個贊
我們可以嘗試groupby+ rank,然后map
df['Level']=df.groupby('ID').Price.rank().map({1:'low',2:'high'})
df
Out[221]:
ID Type Price Level
0 A one 7 low
1 A two 8 high
2 B one 9 high
3 B two 6 low

慕萊塢森
TA貢獻1810條經(jīng)驗 獲得超4個贊
讓我們試試duplicated:
df['Level'] = (df.sort_values('Price').duplicated(['ID'])
.map({True:'high', False:'low'})
)
輸出:
ID Type Price Level
0 A one 7 low
1 A two 8 high
2 B one 9 high
3 B two 6 low
添加回答
舉報
0/150
提交
取消