我正在尝试通过年份和身份来扩展调查,以便执行一些回归。 我愿意接下来的数据框
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
答案 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