Итерации чисел в df, где условие соответствует - PullRequest
0 голосов
/ 27 сентября 2018

Играя с разными фреймами данных, пытаясь приучить себя к Пандам, я был в тупике, что кажется отсутствием понимания программирования, но может ли кто-нибудь помочь?

Рассмотрим следующее df:

ID  Name                    Week
1   Matthew                 1751
1   Matthew                 1751
1   Matthew                 1751
2   Jon                     1751
2   Jon                     1751
2   Jon                     1751
2   Jon                     1751
3   Lisa                    1751
3   Lisa                    1751
3   Lisa                    1751
3   Lisa                    1751
3   Lisa                    1751
3   Lisa                    1751
3   Lisa                    1751

То, что я пытаюсь сделать здесь, это добавить + 1 к номеру недели для каждого вхождения в индексе, но только в том случае, если имя соответствует самому себе.

ID  Name            Week
1   Matthew         1751
1   Matthew         1752
1   Matthew         1753
2   Jon             1751
2   Jon             1752
2   Jon             1753
2   Jon             1754
3   Lisa            1751
3   Lisa            1752
3   Lisa            1753
3   Lisa            1754
3   Lisa            1755
3   Lisa            1756
3   Lisa            1757

I 'я пробовал простой цикл for

, но он просто увеличивает длину индекса до числа, я также пробовал

for n in df.Name:
    print(len(n)) 

, который просто возвращает длину каждой строки (правильно)и добавление индекса просто возвращает длину индекса количество раз n.

я что-то упустил?я должен сначала создать список, а затем передать его в df?

1 Ответ

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

Использование groupby.cumcount

df['Week'] = df.Week.add(df.groupby('Name').cumcount())

   ID    Name   Week
0   1   Matthew 1751
1   1   Matthew 1752
2   1   Matthew 1753
3   2   Jon     1751
4   2   Jon     1752
5   2   Jon     1753
6   2   Jon     1754
7   3   Lisa    1751
8   3   Lisa    1752
9   3   Lisa    1753
10  3   Lisa    1754
11  3   Lisa    1755
12  3   Lisa    1756
13  3   Lisa    1757
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...