通过十进制结尾消除数字

问题描述 投票:0回答:1

当前有脑残,我不记得如何根据数字以小数点结尾的数字。

说我的数据框是-

dic = {'product':['Bread','Milk','Eggs','Water','OJ','Cereal','Coffee',
                    'Apples','Banana','Muffin'],
       'price':[3.89,2.99,4.00,0.69,1.99,2.39,5.00,0.99,0.98,1.50]}
df = pd.DataFrame(dic)
print(df)

带输出-

  product  price
0   Bread   3.89
1    Milk   2.99
2    Eggs   4.00
3   Water   0.69
4      OJ   1.99
5  Cereal   2.39
6  Coffee   5.00
7  Apples   0.99
8  Banana   0.98
9  Muffin   1.50

而且我只希望价格保持在.99,.00和.50结尾

我想要的输出是-

  product  price
1    Milk   2.99
2    Eggs   4.00
4      OJ   1.99
6  Coffee   5.00
7  Apples   0.99
9  Muffin   1.50

应该知道该怎么做,只是现在不记得了。

python dataframe decimal
1个回答
0
投票
如果这些是简单货币(美元)金额,则可以将十进制值转换为整数(为避免浮动比较,这些值可能会导致错误的答案),然后进行isin检查:

df[df['price'].mul(100).mod(100).astype(int).isin([0, 50, 99])] product price 1 Milk 2.99 2 Eggs 4.00 4 OJ 1.99 6 Coffee 5.00 7 Apples 0.99 9 Muffin 1.50

© www.soinside.com 2019 - 2024. All rights reserved.