- 阅读权限
- 255
- 威望
- 0 级
- 论坛币
- 10475 个
- 通用积分
- 219.8551
- 学术水平
- 10 点
- 热心指数
- 20 点
- 信用等级
- 7 点
- 经验
- 33914 点
- 帖子
- 196
- 精华
- 0
- 在线时间
- 317 小时
- 注册时间
- 2015-5-8
- 最后登录
- 2021-8-13
|
我简单写了下,看满不满足你的要求哇~
- import pandas as pd
- # 生成数据
- df = pd.DataFrame({'数据':['cho']*9,'起点':[5,5,8,24,20,30,37,52,55],'终点':[18,15,20,29,26,35,50,60,60],'name':['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']})
- df_result = pd.merge(df,df,how='outer',on='数据',suffixes=['','_n']) # 合成数据
- df_result = df_result[df_result['name']!=df_result['name_n']] # 剔除同一段
- df_result['重叠长度'] = df_result.apply(lambda x:min(x['终点'],x['终点_n'])-max(x['起点'],x['起点_n']),axis=1) # 计算重叠长度
- df_result[df_result['重叠长度']>0] # 筛选有交集的
复制代码
|
|