如何根据DataFrame的count列值重复对应行?
根据count列重复对应行数的解决方案
你可以用以下两种Pandas方法实现行重复需求,替代无效的multiply()函数:
方法一:利用index.repeat()快速实现
直接基于原DataFrame的索引,根据count列的值重复对应次数的行:
import pandas as pd # 构造示例数据 df = pd.DataFrame({ 'count': [2, 3, 1, 3], 'color': ['blue', 'red', 'orange', 'yellow'], 'name': ['mike', 'james', 'mark', 'oscar'] }) # 核心操作:按count值重复行 result_df = df.loc[df.index.repeat(df['count'])] # 可选:重置索引避免重复索引 result_df = result_df.reset_index(drop=True) print(result_df)
运行后会生成你预期的输出,每行严格按照count列的数值重复对应次数。
方法二:使用explode()函数展开
通过临时辅助列实现行重复,适合需要更灵活操作的场景:
import pandas as pd df = pd.DataFrame({ 'count': [2, 3, 1, 3], 'color': ['blue', 'red', 'orange', 'yellow'], 'name': ['mike', 'james', 'mark', 'oscar'] }) # 生成与count长度匹配的临时列表,再炸开成多行 df['_temp'] = df['count'].apply(lambda x: [None]*x) result_df = df.explode('_temp').drop('_temp', axis=1) result_df = result_df.reset_index(drop=True) print(result_df)
关于multiply()的误区
multiply()是元素级数值运算函数,仅会对单元格内的数值进行乘法计算,不会改变DataFrame的行数或结构,因此无法实现行重复的需求。
内容的提问来源于stack exchange,提问作者ApacheOne
相关产品推荐
相关产品推荐

