2
名單我有類似下面的數據框:比賽列在大熊貓數據幀
id sub_id others
NaN 10 xxx
10 11 xxx
10 13 xxx
10 15 xxx
11 12 xxx
11 16 xxx
13 14 xxx
15 17 xxx
12 20 xxx
16 55 xxx
16 85 xxx
14 19 xxx
14 43 xxx
17 87 xxx
17 91 xxx
說,例如ID == 10是該數據幀的老闆。 我有一個關卡的列表:levels = [a,b,c,d]。在我的級別列表中,a表示老闆,b表示老闆管理的級別,c是b管理的級別等等。
我想要做的是我想查看哪個ID管理sub_id並基於它創建一個新的列,表示sub_id對應的級別。
我希望我的最後數據幀是這樣的:
id sub_id others level
NaN 10 xxx a
10 11 xxx b
10 13 xxx b
10 15 xxx b
11 12 xxx c
11 16 xxx c
13 14 xxx c
15 17 xxx c
12 20 xxx d
16 55 xxx d
16 85 xxx d
14 19 xxx d
14 43 xxx d
17 87 xxx d
17 91 xxx d
我目前做如下:
pointer_subid = []
loop_subid = []
data['level'] = np.nan
boss = data[data.id.isnull()]
data['level'][(data['id'].isnull())] = 'a'
pointer_subid.append([boss['sub_id'])
levels = ['b', 'c', 'd']
k=0
while k < len(levels):
for i in range(0, len(pointer_subid)):
for j in range(0,len(data)):
data['level'][(data['id'][j] == i)] = levels[k]
loop_subid.append(data['sub_id'][j])
del pointer_subid
pointer_subid = list(loop_subid)
del loop_subid
loop_subid = []
k = k+1
我不知道,如果上面這段代碼會工作。它現在一直在運行幾個小時,我不能檢查它是否給我所需的結果。有沒有其他有效的方法來做到這一點?
任何幫助將不勝感激。在此先感謝..