我有一个看起来像这样的熊猫数据框: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 中的“价格”的结果。所以结果看起来像这样: ID Type Price Level0 A one 7 low1 A two 8 high2 B one 9 high3 B two 6 low我正在寻找一种有效的方法来做到这一点。谢谢!
2 回答
料青山看我应如是
TA贡献1772条经验 获得超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条经验 获得超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
提交
取消