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

Я пытаюсь дать список номеров для кадра данных. Я хочу получить следующий результат:

Unit        Ida
            1      
Parcel 1    2
Parcel 2    2
Parcel 3    2
            3
            4
Parcel 1    5
Parcel 2    5

Первый код, который я использовал, выглядит так:


    Address['Ida'] = ''
    Ida = 1
    Address['Ida'][0] = Ida
    for x in range(len(Address)-1):
        if str(Address['Unit'][x+1]) == ('Parcel 1' or ''):
            Ida = Ida + 1
            Address['Ida'][x+1] = Ida
        else:
            Address['Ida'][x+1] = Ida

Но скорость моего кода очень, очень низкая. Так есть ли в пандах лучший эффективный способ сделать это?

1 Ответ

0 голосов
/ 01 мая 2018

IIUC с использованием cumsum с shift

((df.Unit=='')|(df.Unit=='Parcel1')).cumsum()
Out[129]: 
0    1
1    2
2    2
3    2
4    3
5    4
6    5
7    5
Name: Unit, dtype: int32
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...