Вставка строки из списка в формулу датафрейма для расчета цикла в пандах - PullRequest
0 голосов
/ 30 ноября 2018

Надеюсь, у всех все хорошо, я все еще новичок в Python / Pandas и мне интересно, возможно ли следующее.У меня есть список имен столбцов / вопросов из моего кадра данных.Я хочу иметь возможность передать их в мой код

    Council     NPS EASE OSAT
0   CouncilA    5   99   2
1   CouncilB    0   4    2
2   CouncilC    4   1    5
3   CouncilA    1   4    5
4   CouncilB    3   1    3
5   CouncilC    1   4    3
6   CouncilA    4   1    99
7   CouncilB    4   4    1
8   CouncilC    3   3    3
9   CouncilA    2   2    1
10  CouncilB    4   99   4
11  CouncilC    2   2    5

Вот код, который я пытаюсь обновить.

df = df[['Council', 'NPS', 'EASE', 'OSAT']]

percent4_5 = df[(df['NPS'] >= 4) & (df['NPS'] <=5 )].groupby(['Council'])['NPS'].count()
base = df[(df['NPS'] >= 0) & (df['NPS'] <=5 )].groupby(['Council'])['NPS'].count()
score = (percent4_5 / base)

На данный момент, если я хочу вычислить счетнапример, «EASE», я должен заменить «NPS» на «EASE», так как база для каждого вопроса разная.Было бы здорово, если бы код мог циклически проходить по списку и выводить результат для «NPS», «EASE», «OSAT».

Я надеюсь, что я придерживаюсь этикета на этом форуме.Пожалуйста, дайте мне знать, если я что-то делаю неправильно.

Ожидаемый вывод из Excel: введите описание изображения здесь

1 Ответ

0 голосов
/ 30 ноября 2018

Вы действительно почти там.Просто установите «Совет» в качестве индекса и повторите свои операции, но для DataFrame в целом.groupby операции могут быть векторизованы по всему DataFrame.

df = df.set_index('Council')
percent4_5 = df[(df >= 4) & (df <= 5)].groupby(level=0).count()
base = df[(df >= 0) & (df <= 5)].groupby(level=0).count()

score = percent4_5 / base
print(score)
           NPS      EASE      OSAT
Council                           
CouncilA  0.50  0.333333  0.333333
CouncilB  0.50  0.666667  0.250000
CouncilC  0.25  0.250000  0.500000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...