如何为树木时序测量数据集添加生存及新增二值标签?
树木生存状态与新增树木标签实现方法
一、生成tree_survival存活标签
需求:同时出现在t1和t2的树木标记为1,仅在t1出现的标记为0。
用Pandas实现的代码如下:
import pandas as pd # 构造示例数据(实际可替换为读取你的数据集) df = pd.DataFrame({ 'State': [1,1,1,1,1], 'County': [9,9,9,9,9], 'Plot': [1,1,1,1,1], 'Tree': [1,2,3,1,2], 'Meas_yr': ['t1','t1','t1','t2','t2'] }) # 按树木唯一标识分组,判断是否存在t2记录 survival_map = df.groupby(['State', 'County', 'Plot', 'Tree'])['Meas_yr'].apply( lambda x: 1 if 't2' in x.values else 0 ) # 将存活标签合并回原数据集 df['tree_survival'] = df.set_index(['State', 'County', 'Plot', 'Tree']).index.map(survival_map)
运行后就能得到目标格式:Tree=3因为只有t1记录,tree_survival会被标记为0,其余存在t2记录的树木标记为1。
二、生成新增树木标签(仅t2出现标记为1)
需求:仅在t2出现的新增树木标记为1,其余(同时存在t1/t2、仅t1存在)标记为0。
实现代码:
# 按树木唯一标识分组,判断是否仅存在t2记录 new_tree_map = df.groupby(['State', 'County', 'Plot', 'Tree'])['Meas_yr'].apply( lambda x: 1 if (x == 't2').all() else 0 ) # 合并新增标签到原数据集 df['new_tree'] = df.set_index(['State', 'County', 'Plot', 'Tree']).index.map(new_tree_map)
比如如果数据里有一行State=1, County=9, Plot=1, Tree=4, Meas_yr=t2,这棵树的new_tree标签会是1,其他树木则为0。
内容的提问来源于stack exchange,提问作者sakar299
相关产品推荐
相关产品推荐

