按权重扩展调查数据集(按年份和ID)以开展回归分析
按Weight字段扩展调查数据集的实现方法
嘿,我来帮你搞定这个数据集扩展的需求!你想要根据weight字段的数值,把每个id-year对应的行重复相应次数,用来做回归分析对吧?这方案其实很简单,用pandas几行代码就能搞定。
首先,先把你提供的原始数据整理成标准的pandas DataFrame(我帮你还原了正确的结构):
import pandas as pd # 构造原始数据集 data = { 'id': [1, 1, 2, 2, 3, 1], 'year': [2011, 2012, 2011, 2012, 2011, 2012], 'weight': [2, 1, 1, 2, 3, 1], 'X': [54, 57, 8, 10, 10, 9], 'Y': ['Medium', 'Medium', 'Micro', 'Micro', 'Micro', 'Micro'] } df = pd.DataFrame(data)
接下来就是核心的扩展操作,一行代码就能实现按weight重复行:
# 根据weight字段的值重复对应行 expanded_df = df.loc[df.index.repeat(df['weight'])] # 可选步骤:重置索引,避免出现重复的索引值 expanded_df = expanded_df.reset_index(drop=True)
原理说明
df.index.repeat(df['weight'])会生成一个新的索引列表,其中每个原始行的索引会被重复对应weight数值的次数。比如第一行weight是2,它的索引就会被重复2次。df.loc[...]根据这个新的索引列表提取行,自然就实现了按权重扩展数据集的效果。
运行完代码后,你得到的expanded_df就完全符合你期望的格式了——每个行都按照weight的数值重复了相应次数,完美适配后续的回归分析需求。
内容的提问来源于stack exchange,提问作者Lucas Dresl
相关产品推荐
相关产品推荐

