首页 > 解决方案 > 在 Panda DataFrame 中返回十进制数的倍数

问题描述

我有以下数据框:

import pandas as pd, numpy as np
df = pd.DataFrame({'Instrument':['BBB','BBB','BBB','CCC','CCC'], 
'Date':['2020-01-02','2020-01-02','2020-01-02','2020-01-03','2020-01-03'],
'Time':['09:47:07.136','09:57:13.757','09:58:26.841','09:28:31.161','09:28:43.562'], 
'Price': [1.80,1.855,1.598,30.010,25.985]})

我想过滤掉那些不是某个数字(刻度大小)倍数的价格值,这意味着,对于价格范围在 0.10 美元到 2.00 美元之间,倍数(刻度大小)是 0.005 美元。对于大于或等于 2.00 美元的价格,倍数(刻度大小)为 0.01 美元。

因此,过滤后的理想df将是:

import pandas as pd, numpy as np
df = pd.DataFrame({'Instrument':['BBB','BBB','CCC'], 
'Date':['2020-01-02','2020-01-02','2020-01-03'],
'Time':['09:47:07.136','09:57:13.757','09:28:31.161'], 
'Price': [1.80,1.855,30.010]})

谢谢!

标签: pythonpandasdataframedecimal

解决方案


你也可以试试这个

newdf = df.loc[(df["Price"].between(0.1,2)) & (df["Price"]/0.005%1 == 0)]

推荐阅读