如何在Pandas中根据列值重复数据行?
Pandas根据指定列值重复行的实现方法
你可以通过以下两种简洁的方式实现需求:
方法一:使用repeat + loc(高效推荐)
利用索引重复提取对应行,再移除不需要的value列:
import pandas as pd df = { "id" : ["apple", "potato","lemon"],"som" : [4, 2, 7] , "value" : [1, 2, 4]} df = pd.DataFrame(df) # 根据value列的值重复每行 results_df = df.loc[df.index.repeat(df['value'])] # 删除value列并重置索引 results_df = results_df.drop('value', axis=1).reset_index(drop=True) # 输出结果 print(results_df)
方法二:使用apply + explode
先将需要保留的列转为对应长度的列表,再展开列表:
import pandas as pd df = { "id" : ["apple", "potato","lemon"],"som" : [4, 2, 7] , "value" : [1, 2, 4]} df = pd.DataFrame(df) # 将id和som列转换为对应value长度的列表 df['id'] = df.apply(lambda row: [row['id']] * row['value'], axis=1) df['som'] = df.apply(lambda row: [row['som']] * row['value'], axis=1) # 展开列表并清理列 results_df = df.explode(['id', 'som']).drop('value', axis=1).reset_index(drop=True) # 输出结果 print(results_df)
两种方法最终都会得到你期望的结果,其中方法一的性能更优,适合处理大规模数据集。
内容的提问来源于stack exchange,提问作者vojtam
相关产品推荐
相关产品推荐

