python - 尝试复制 Pandas DataFrame 行 X 次,但因列值而异
问题描述
df
Name Run ID1 ID2
0 A 18 100 500
1 B 19 150 550
2 C 18 200 600
3 D 15 250 650
然后我有一个名为max_runs = 20的变量 我想做的是将数据转换为下面的这种格式。基本上复制每个唯一行 max_runs - df['Run'] 次
df_output
Name Run ID1 ID2
1 A 19 100 500
2 A 20 100 500
3 B 20 150 550
4 C 19 200 600
5 C 20 200 600
6 D 16 250 650
7 D 17 250 650
8 D 18 250 650
9 D 19 250 650
10 D 20 250 650
感谢您的帮助,如果我需要进一步解释,请告诉我
解决方案
您可以使用repeat
重复行并assign
修改新运行:
(df.loc[df.index.repeat(20-df.Run)]
.assign(Run=lambda x: x.groupby(level=0).cumcount().add(x.Run+1))
.reset_index()
)
输出:
index Name Run ID1 ID2
0 0 A 19 100 500
1 0 A 20 100 500
2 1 B 20 150 550
3 2 C 19 200 600
4 2 C 20 200 600
5 3 D 16 250 650
6 3 D 17 250 650
7 3 D 18 250 650
8 3 D 19 250 650
9 3 D 20 250 650
推荐阅读
- c++ - 我如何获得正确的答案而不仅仅是随机数?
- python - 查找函数的梯度:Sympy vs. Jax
- bokeh - 如何获得 Object 触发了回调的 Bokeh 回调?
- arrays - ConvertTo-JSON 错误地解析数组
- node.js - 在nodejs中获取整个错误堆栈跟踪
- html - IE11 和 Edge 18:为什么与 rel=prefetch 结合使用时不会触发 onload?
- javascript - 为什么我的传单地图一直显示空白区域
- oracle - Oracle Apex - 使用动态操作刷新区域
- xamarin.forms - Xamarin.Forms 如何将代码中的数据绑定到滑动视图(在 xaml 中工作)
- javascript - 防止后处理程序最小化应用程序