【问题标题】:Map, Filter and Reduce procedures in PythonPython 中的 Map、Filter 和 Reduce 过程
【发布时间】:2018-07-03 02:09:05
【问题描述】:

我正在努力理解 Python 中的 map、filter 和 reduce 的概念。我正在使用 Python v3.6 在 Spyder IDE 中工作。我有一个数据框:

Cap    OC_y       GMWB         PE        Acc
0.01    0.0065  0.560840708 0.646683673 0.515243902
0.0105  0.0068  0.586725664 0.676530612 0.53902439
0.011   0.0071  0.612610619 0.706377551 0.562804878
0.0115  0.0073  0.629867257 0.72627551  0.578658537
0.012   0.0076  0.655752212 0.756122449 0.602439024
0.0125  0.0079  0.681637168 0.785969388 0.626219512
0.013   0.0082  0.707522124 0.815816327 0.65
0.0135  0.0085  0.73340708  0.845663265 0.673780488
0.014   0.0087  0.750663717 0.865561224 0.689634146
0.0145  0.009   0.776548673 0.895408163 0.713414634
0.015   0.0093  0.802433628 0.925255102 0.737195122

我想选择以 0.005 为增量的 Cap 记录。请看下面:

Cap    OC_y        GMWB          PE         Acc
0.01    0.0065  0.560840708 0.646683673 0.515243902
0.015   0.0093  0.802433628 0.925255102 0.737195122

在这种情况下,地图功能在这种情况下不起作用吗?

map(lambda Cap: Cap + 0.05, data)

任何其他选择都会很棒。理想情况下,我需要它以一种可以基于某个值增量选择记录的方式工作。

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    假设这些都是0.005的倍数,你可以除以np.isclose来选择。

    v = df.Cap / 0.005
    out = df[np.isclose(v, v.astype(int))]
    

    如果不是这样,那么我建议减去 delta 直到达到,然后重复上述操作:

    v = (df.Cap - (df.Cap % 0.005).iat[0]) / 0.005
    out = df[np.isclose(v, v.astype(int))]
    

    print(out)
    
          Cap    OC_y      GMWB        PE       Acc
    0   0.010  0.0065  0.560841  0.646684  0.515244
    10  0.015  0.0093  0.802434  0.925255  0.737195
    

    【讨论】:

    • 这很有帮助,而且比我最初想的更容易解释。感谢您对此的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-23
    • 1970-01-01
    • 2019-06-12
    相关资源
    最近更新 更多