python - 按权重展开调查
问题描述
我正在尝试通过按年份和 id 的权重来扩展调查,以便进行一些回归。我愿意以下数据框
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
将它转换成这样的东西(这个例子只是为了说明我的问题,我的真实数据集有很多 ids 和 features)
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
解决方案
一种方法是使用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
推荐阅读
- javascript - 为什么不能删除兄弟姐妹的事件监听器?
- junit - 如何将 Serenity 聚合报告创建为 Ant 任务
- java - 如何比较集合中包含的对象?什么是好的哈希码和 equals 实现?
- appimage - AppImage 文件/程序是否意味着独立?
- python-3.x - 如何为 TensorFlow 下载 scripts.retrain 以供诗人使用?
- ios - 如何调配 Swift.print(items:separator:terminator)
- php - 应该在线程之间共享 udp 套接字资源以在 php 中发送/接收消息
- javascript - 如何将我的 github URL 重定向到位于文件夹中的索引文件?
- html - 如何对齐 Bootstrap 表单的输入字段和标签?
- mysql - 如何使用月份名称获取最近 3 个月的计数,如果该月份没有记录需要使用月份名称获取 0