如何按DataFrame中catch列数值重复对应行记录
解决方案
你可以用Pandas的repeat()方法结合索引定位来实现需求,具体步骤如下:
1. 构造示例DataFrame
先还原你提供的数据集:
import pandas as pd data = { 'catch': [253, 4947, 3656, 3259, 2902, 4605, 764, 256], 'yr': [2013]*8, 'mesh': [0, 1, 1.25, 1.5, 1.75, 2, 2.25, 2.5] } df = pd.DataFrame(data)
2. 根据catch列数值重复行
利用df.index.repeat()生成重复的索引,再通过loc提取对应行,最后重置索引避免重复:
result_df = df.loc[df.index.repeat(df['catch'])].reset_index(drop=True)
验证结果
可以查看结果的行数是否符合预期:
print(result_df.shape[0]) # 输出:253+4947+3656+3259+2902+4605+764+256 = 20642
这样生成的result_df里,每一行都会按照原catch列的数值重复对应次数,且yr和mesh列的值保持与原行一致,catch列也保留原行的数值。
内容的提问来源于stack exchange,提问作者vermicellion
相关产品推荐
相关产品推荐

