[英]Pandas replace row values with consecutive rows
我有一只熊貓 DF:-
start end ent
0 2 O
3 6 O
7 10 O
11 17 ABC
18 20 O
21 24 O
25 29 O
30 32 O
33 37 XYZ
38 41 XYZ
42 46 XYZ
47 50 O
51 55 O
56 59 O
60 64 O
65 67 O
68 72 O
72 75 O
76 79 O
79 82 O
82 85 O
目標是將行的“結束”值與行+1 的“開始”值進行比較,如果它們相等,則上述結果為:-
start end ent
0 2 O
3 6 O
7 10 O
11 17 ABC
18 20 O
21 24 O
25 29 O
30 32 O
33 37 XYZ
38 41 XYZ
42 46 XYZ
47 50 O
51 55 O
56 59 O
60 64 O
65 67 O
68 75 O
76 85 O
原始 df 的最后 5 行已更改。
非常感謝任何輸入,謝謝。
要獲得以前的值,我們可以使用shift()
。 識別這些塊的常用技術是cumsum
在否定條件下,然后 groupby:
mask = df['start'] != df['end'].shift()
df.groupby(mask.cumsum()).agg({'start':'first', 'end':'last', 'ent':'first'})
輸出:
start end ent
1 0 2 O
2 3 6 O
3 7 10 O
4 11 17 ABC
5 18 20 O
6 21 24 O
7 25 29 O
8 30 32 O
9 33 37 XYZ
10 38 41 XYZ
11 42 46 XYZ
12 47 50 O
13 51 55 O
14 56 59 O
15 60 64 O
16 65 67 O
17 68 75 O
18 76 85 O
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.