我正在尝试为数据框提供一个数字列表。我想要的结果如下:
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
但我的代码速度非常慢。那么在熊猫中,还有更好的方法吗?
答案 0 :(得分:2)
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