Отобразить, отфильтровать и уменьшить процедуры в Python - PullRequest
0 голосов
/ 02 июля 2018

Я работаю через понимание концепций карты, фильтрации и сокращения в Python. Я работаю в Spyder IDE с Python v3.6. У меня есть фрейм данных:

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

Я хочу выбрать записи Cap с шагом в 0,005. Пожалуйста, смотрите ниже:

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)

Любой другой вариант был бы великолепен. Мне в идеале нужно, чтобы он работал так, чтобы я мог постепенно выбирать записи на основе определенного значения.

1 Ответ

0 голосов
/ 02 июля 2018

Предполагая, что они кратны 0,005, вы можете разделить и затем использовать np.isclose для выбора.

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

Если это не так, то я рекомендую вычитать дельту до тех пор, пока она не произойдет, а затем повторить вышеупомянутое:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...