为了账号安全,请及时绑定邮箱和手机立即绑定

比较 Pandas 中的行

比较 Pandas 中的行

潇湘沐 2023-04-18 16:19:24
我有一个看起来像这样的熊猫数据框: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


查看完整回答
反对 回复 2023-04-18
?
慕莱坞森

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


查看完整回答
反对 回复 2023-04-18
  • 2 回答
  • 0 关注
  • 142 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信