簡體   English   中英

Pandas 用連續的行替換行值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM