如何在Pandas中按列值重复行并添加重复索引列
解决方法:为重复后的DataFrame添加repeat_id列
嗨,这问题我熟!你已经用df.loc[df.index.repeat(df.n)]搞定了行重复的核心部分,现在只需要结合Pandas的分组计数功能,就能轻松生成你要的repeat_id列,完美匹配目标结果。
直接上完整实现代码:
import pandas as pd # 你的原始DataFrame df = pd.DataFrame(data={ 'id': ['A', 'B', 'C'], 'n' : [ 1, 2, 3], 'v' : [ 10, 13, 8] }) # 一步完成行重复+添加repeat_id result = df.loc[df.index.repeat(df.n)].assign( repeat_id=lambda x: x.groupby(level=0).cumcount() ) # 验证结果是否符合预期 print(result)
简单解释下原理
df.index.repeat(df.n)会根据n列的数值重复对应行,重复后的行保留原始的索引值groupby(level=0)按原始索引分组(因为重复行的索引和原行完全一致)cumcount()会为每个分组内的行从0开始递增计数,刚好生成0到k-1的repeat_id值(k就是每行对应的n值)
运行后得到的结果和你给出的what_i_want完全一致!
内容的提问来源于stack exchange,提问作者kampta
相关产品推荐
相关产品推荐

