按重量扩大调查范围

时间:2018-05-23 00:29:56

标签: python python-3.x pandas numpy

我正在尝试通过年份和身份来扩展调查,以便执行一些回归。 我愿意接下来的数据框

df 
id    year   weight    X       Y
 1    2011        2   54  Medium
 1    2012        1   57  Medium
 2    2011        1    8   Micro
 2    2012        2   10   Micro
 3    2011        3   10   Micro
 1    2012        1    9   Micro

将其转换为类似的东西(示例只是用于说明我的问题的示例,我的真实数据集有很多ID和功能)

id    year   weight    X       Y
 1    2011        2   54  Medium
 1    2011        2   54  Medium
 1    2012        1   57  Medium
 2    2011        1    8   Micro
 2    2012        2   10   Micro
 2    2012        2   10   Micro
 3    2011        3   10   Micro
 3    2011        3   10   Micro
 3    2011        3   10   Micro
 1    2012        1    9   Micro

1 个答案:

答案 0 :(得分:2)

一种方法是使用pd.Series.repeat

res = df.set_index(['id', 'year', 'X', 'Y'])['weight']\
        .repeat(df['weight'])\
        .reset_index()

print(res)

   id  year   X       Y  weight
0   1  2011  54  Medium       2
1   1  2011  54  Medium       2
2   1  2012  57  Medium       1
3   2  2011   8   Micro       1
4   2  2012  10   Micro       2
5   2  2012  10   Micro       2
6   3  2011  10   Micro       3
7   3  2011  10   Micro       3
8   3  2011  10   Micro       3
9   1  2012   9   Micro       1