比较熊猫中的行

时间:2020-07-31 15:34:37

标签: python pandas row

我有一个熊猫数据框,看起来像这样:

df = pd.DataFrame( [ ['A','one',7], ['A','two',8], ['B','one',9], ['B','two',6]], columns=['ID', 'Type', 'Price'])

    ID  Type    Price
0   A   one     7
1   A   two     8
2   B   one     9
3   B   two     6

我想添加一列,该列是每个ID之间比较“价格”的结果。所以结果看起来像这样:

    ID  Type    Price   Level
0   A   one        7    low
1   A   two        8    high
2   B   one        9    high
3   B   two        6    low

我正在寻找一种有效的方法。谢谢!

2 个答案:

答案 0 :(得分:3)

我们可以先尝试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

答案 1 :(得分:2)

让我们尝试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