如何为树木测量数据集添加binary column识别仅存在于t2的新增观测树木
解决方案:用Pandas实现树木存活标签的生成
首先,我们可以用Python的Pandas库来高效处理这个需求,核心思路是通过分组判断每个树木的时间点出现情况来生成目标标签。
步骤说明
- 先将所有数据整合到一个DataFrame中(如果你的t1和t2是两个独立文件,可以先分别读取再合并)。
- 以
state、county、plot、tree这四个唯一标识树木的列分组,针对每个组的测量年份(Meas_yr)做判断:- 如果组内只有
t2这个年份(也就是仅出现在t2的新树木),标记为1 - 其他所有情况(包括只出现在t1、同时出现在t1和t2的树木),标记为
0
- 如果组内只有
代码实现
import pandas as pd # 假设你的原始数据已经读取到DataFrame df中 # 如果是从CSV文件读取:df = pd.read_csv("your_tree_data.csv") # 生成tree_survival标签列 df['tree_survival'] = df.groupby(['state', 'county', 'plot', 'tree'])['Meas_yr'].transform( lambda x: 1 if (x.nunique() == 1) and ('t2' in x.values) else 0 ) # 查看最终结果 print(df)
测试你的示例数据
用你提供的示例数据验证:
原始输入数据
state county plot tree Meas_yr 1 9 1 1 t1 1 9 1 2 t1 1 9 1 3 t1 1 9 1 1 t2 1 9 1 2 t2 1 9 1 4 t2 1 9 1 5 t2
运行代码后输出结果
state county plot tree Meas_yr tree_survival 0 1 9 1 1 t1 0 1 1 9 1 2 t1 0 2 1 9 1 3 t1 0 3 1 9 1 1 t2 0 4 1 9 1 2 t2 0 5 1 9 1 4 t2 1 6 1 9 1 5 t2 1
完全匹配你期望的输出格式和结果。
补充说明
- 如果你的t1和t2数据是分开的两个文件,可以先合并再处理:
df_t1 = pd.read_csv("t1_tree_data.csv") df_t2 = pd.read_csv("t2_tree_data.csv") df = pd.concat([df_t1, df_t2], ignore_index=True) - 这个方法用了Pandas的向量化分组操作,比循环遍历效率高很多,适合处理大规模数据集。
内容的提问来源于stack exchange,提问作者sakar299
相关产品推荐
相关产品推荐

