在R语言中将序列起始值重置为1:调整dataframe的start和end列
调整DataFrame区间起始值的实现方案
需求分析
现有包含start和end列的DataFrame,需将第一行的start值改为1,同时保持每个区间的长度不变,后续区间依次衔接。原数据如下:
> df1 start end 1 5 7 2 8 12 3 13 15 4 16 20
期望转换为:
> df2 start end 1 1 3 2 4 8 3 9 11 4 12 16
实现代码
利用Pandas可快速完成转换,核心是计算偏移量并统一调整所有区间的起止值:
import pandas as pd # 构造原始DataFrame df1 = pd.DataFrame({ 'start': [5, 8, 13, 16], 'end': [7, 12, 15, 20] }) # 计算偏移量:将第一个start调整为1所需的差值 offset = 1 - df1.iloc[0]['start'] # 复制数据并应用偏移量 df2 = df1.copy() df2['start'] += offset df2['end'] += offset print(df2)
逻辑说明
原数据的区间是连续衔接的(前一行end+1等于后一行start),因此只需给所有start和end值加上1与第一个起始值的差值,即可让第一个区间起始变为1,同时保留所有区间的长度和衔接关系。
内容的提问来源于stack exchange,提问作者ghs101
相关产品推荐
相关产品推荐

