如何在分组结构数据中将response列上移一行并删除X列第10项
解决方案
假设你的数据框df包含group(分组列)、X(序号列)、response(需要偏移的列)三列,按以下操作处理:
分组内偏移response列
对每个分组的response列执行向上偏移一行(通过shift(-1)实现,让当前行的response对应下一行的原始response值):df['response'] = df.groupby('group')['response'].shift(-1)删除每个分组中X为10的行
直接过滤掉X等于10的所有行,同时重置索引:df = df[df['X'] != 10].reset_index(drop=True)
模拟验证
你可以用以下代码构造测试数据验证效果:
import pandas as pd import numpy as np # 构造2个分组,每个分组X从1到10,response初始值和X一致 groups = np.repeat(['A', 'B'], 10) X = np.tile(range(1, 11), 2) response = X.copy() df = pd.DataFrame({'group': groups, 'X': X, 'response': response})
运行处理代码后,每个分组的X保留1-9,response对应2-10,完全匹配你的期望输出。
内容的提问来源于stack exchange,提问作者Rustam
相关产品推荐
相关产品推荐

