【问题标题】:Returning multiples of a decimal number in Panda DataFrame在 Panda DataFrame 中返回十进制数的倍数
【发布时间】:2020-10-11 16:10:45
【问题描述】:

我有以下数据框:

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]})

谢谢!

【问题讨论】:

    标签: python pandas dataframe decimal


    【解决方案1】:
    df[(df["Price"] >= 0.1) & (df["Price"] <= 2) & (df["Price"]/0.005%1 == 0)]
    

    这是第一个条件,你可以用同样的方法自己完成第二个条件。 要过滤数据框:df[condition1 &amp; condition2](和-ish 关系)。条件 1 只是范围,它非常简单。价格滴答的第二个条件:就像学习编码时的基本问题一样,您首先将其除以滴答,看看它是否为整数(取模数 1 并查看它是否为零)。就像如果您想查看 4.2 是否是 2 的乘积:您按滴答潜水并检查是否有提醒。

    P.S - 下次,请举例说明您已经尝试过的内容或遇到的问题。不要只是寻求解决方案

    【讨论】:

      【解决方案2】:

      你也可以试试这个

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

      【讨论】:

        猜你喜欢
        • 2011-07-22
        • 1970-01-01
        • 2021-06-04
        • 2016-02-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-13
        相关资源
        最近更新 更多