Как рассчитать суммы, которые в строке значения больше, чем конкретное значение в пандах? - PullRequest
0 голосов
/ 02 сентября 2018

Как рассчитать суммы, которые в строке значения больше, чем конкретное значение в пандах? Например, у меня есть Pandas DataFrame dff. Я хочу посчитать значения строк больше 0.

dff = pd.DataFrame(np.random.randn(9,3),columns=['a','b','c'])
dff

    a           b           c
0   -0.047753   -1.172751   0.428752
1   -0.763297   -0.539290   1.004502
2   -0.845018   1.780180    1.354705
3   -0.044451   0.271344    0.166762
4   -0.230092   -0.684156   -0.448916
5   -0.137938   1.403581    0.570804
6   -0.259851   0.589898    0.099670
7   0.642413    -0.762344   -0.167562
8   1.940560    -1.276856   0.361775

Я использую неэффективный способ. Как быть эффективнее?

dff['count'] = 0
for m in range(len(dff)):        
    og = 0
    for i in dff.columns:
        if dff[i][m] > 0:
            og += 1
    dff['count'][m] = og
dff

    a           b           c           count
0   -0.047753   -1.172751   0.428752    1
1   -0.763297   -0.539290   1.004502    1
2   -0.845018   1.780180    1.354705    2
3   -0.044451   0.271344    0.166762    2
4   -0.230092   -0.684156   -0.448916   0
5   -0.137938   1.403581    0.570804    2
6   -0.259851   0.589898    0.099670    2
7   0.642413    -0.762344   -0.167562   1
8   1.940560    -1.276856   0.361775    2

1 Ответ

0 голосов
/ 02 сентября 2018

Вы можете создать логическую маску вашего DataFrame, то есть True, где значение больше вашего порога (в данном случае 0), а затем использовать sum вдоль первой оси.

dff.gt(0).sum(1)

0    1
1    1
2    2
3    2
4    0
5    2
6    2
7    1
8    2
dtype: int64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...