我有以下資料幀:
將熊貓匯入為 pd
DataExe = [[2 , 1],
[4 , 1],
[7 , 2],
[9 , 3],
[10, 3],
[15, 3],
[19, 2],
[24, 2],
[27, 2],
[29, 2],
[37, 2],
[38, 2]]
DataExe = pd.DataFrame(data = DataExe, columns = ['ColA', 'Indicator'])
我正在尋找的是“ColA”值根據“指標”指示的內容進行集中。例如:
正如在 'ColA' [2, 4] 中所觀察到的,它們的共同點是 'Indicator' = 1。然后我們創建一個新的 'ColC' 列,其中每一行都放置了 'ColA' 的所有值。
我必須具備以下條件:
ColA Indicator ColC
2 1 2, 4
4 1 2, 4
7 2 7, 19, 24, 27, 29, 37, 38
9 3 9, 10, 15
10 3 9, 10, 15
15 3 9, 10, 15
19 2 7, 19, 24, 27, 29, 37, 38
24 2 7, 19, 24, 27, 29, 37, 38
27 2 7, 19, 24, 27, 29, 37, 38
29 2 7, 19, 24, 27, 29, 37, 38
37 2 7, 19, 24, 27, 29, 37, 38
38 2 7, 19, 24, 27, 29, 37, 38
注意:ColC 是一個新列。
uj5u.com熱心網友回復:
你可以使用groupby transform:
DataExe['ColC'] = DataExe.groupby('Indicator')['ColA'].transform(lambda g: ','.join(map(str, g)))
輸出:
ColA Indicator ColC
0 2 1 2,4
1 4 1 2,4
2 7 2 7,19,24,27,29,37,38
3 9 3 9,10,15
4 10 3 9,10,15
5 15 3 9,10,15
6 19 2 7,19,24,27,29,37,38
7 24 2 7,19,24,27,29,37,38
8 27 2 7,19,24,27,29,37,38
9 29 2 7,19,24,27,29,37,38
10 37 2 7,19,24,27,29,37,38
11 38 2 7,19,24,27,29,37,38
uj5u.com熱心網友回復:
這是將數字組作為串列回傳的替代方法:
def GroupList(group):
group['ColC'] = [np.array(group.ColA)]*len(group)
return group
DataExe.groupby('Indicator').apply(GroupList)
Output:
ColA Indicator ColC
0 2 1 [2, 4]
1 4 1 [2, 4]
2 7 2 [7, 19, 24, 27, 29, 37, 38]
6 19 2 [7, 19, 24, 27, 29, 37, 38]
7 24 2 [7, 19, 24, 27, 29, 37, 38]
8 27 2 [7, 19, 24, 27, 29, 37, 38]
9 29 2 [7, 19, 24, 27, 29, 37, 38]
10 37 2 [7, 19, 24, 27, 29, 37, 38]
11 38 2 [7, 19, 24, 27, 29, 37, 38]
3 9 3 [9, 10, 15]
4 10 3 [9, 10, 15]
5 15 3 [9, 10, 15]
或者,更復雜的語法但在一行中:
DataExe.groupby('Indicator').apply(lambda g:g.assign(ColC=[np.array(g.ColA)]*len(g))).droplevel(0)
ColA Indicator ColC
0 2 1 [2 4]
1 4 1 [2 4]
2 7 2 [ 7 19 24 27 29 37 38]
6 19 2 [ 7 19 24 27 29 37 38]
7 24 2 [ 7 19 24 27 29 37 38]
8 27 2 [ 7 19 24 27 29 37 38]
9 29 2 [ 7 19 24 27 29 37 38]
10 37 2 [ 7 19 24 27 29 37 38]
11 38 2 [ 7 19 24 27 29 37 38]
3 9 3 [ 9 10 15]
4 10 3 [ 9 10 15]
5 15 3 [ 9 10 15]
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/337843.html
