如何根据pandas中其他列表的值获取不连续列表?

时间:2018-05-01 17:09:03

标签: python pandas numpy

我正在尝试为数据框提供一个数字列表。我想要的结果如下:

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 :(得分:2)

IIUC使用cumsumshift

((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