簡體   English   中英

如果它們在兩列PANDAS之間重疊,如何折疊一系列行

[英]How to collapse a sequence of rows if they overlap amongst two columns PANDAS

我有一個數據框如下:

年齡開始 年齡結束
2 6
6 10
11 16
17 18
21 25
27 30
30 34

我想聚合其中age_end 之間的值與隨后的age_start 值重疊的連續行。 例如,前兩行將被折疊,因為 6 是它們之間的重疊值。 最后兩行也將被折疊,因為重疊值為 30。目標是創建更廣泛的年齡組並對其進行縮放,以便該函數可以聚合任意數量的連續行,而不僅僅是對。 所需的輸出是:

年齡開始 年齡結束
2 10
11 16
17 18
21 25
27 34
# Mark transitions:
df.loc[df.age_start.gt(df.age_end.shift(1)), 'group'] = 1
# Create Groups:
df['group'] = df['group'].cumsum().ffill().fillna(0)
# Extract start/stop point from groups:
out = df.groupby('group').agg({'age_start':'min', 'age_end':'max'}).reset_index(drop=True)
print(out)

輸出:

   age_start  age_end
0          2       10
1         11       16
2         17       18
3         21       25
4         27       34

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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