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