如何将Pandas DataFrame复制扩展至固定目标行数?
扩展DataFrame到指定行数的实现方法
嘿,这个需求用pandas分分钟搞定!核心思路就是要么把原始数据重复足够多的次数再截取前10行,要么精准控制每行的重复次数来凑够目标行数。下面给你两种实用方案:
方案一:快速重复后截取前10行
这种方法最省心,不用纠结每行重复几次,直接把整个DataFrame重复多次,再截取到10行就行:
import pandas as pd import numpy as np # 先创建你的原始DataFrame df = pd.DataFrame({ 'col1': ['A1', 'A13', 'A27'], 'col2': ['B1', 'B13', 'B27'], 'col3': ['C1', 'C13', 'C27'] }) # 计算需要重复的次数,确保总长度超过10 repeat_times = (10 // len(df)) + 1 # 用numpy tile重复整个数据数组 extended_values = np.tile(df.values, (repeat_times, 1)) # 转成DataFrame并取前10行 extended_df = pd.DataFrame(extended_values[:10], columns=df.columns)
运行后得到的extended_df里,前9行是原始3行各重复3次,第10行自动取原始第一行,完全符合你“第10行任选原始行”的要求。
方案二:精准控制每行重复次数
如果你想明确指定哪一行多重复一次(比如让第三行凑够4次),可以用这种方法:
import pandas as pd # 原始DataFrame df = pd.DataFrame({ 'col1': ['A1', 'A13', 'A27'], 'col2': ['B1', 'B13', 'B27'], 'col3': ['C1', 'C13', 'C27'] }) # 定义每行重复次数:3+3+4=10,让第三行多重复1次 repeat_counts = [3, 3, 4] # 按次数重复每行 repeated_df = df.loc[df.index.repeat(repeat_counts)] # 重置索引得到最终10行数据 extended_df = repeated_df.reset_index(drop=True)
这样得到的结果里,前3行是原始第一行,中间3行是原始第二行,最后4行是原始第三行,刚好凑够10行。你可以随便调整repeat_counts里的数字,让任意一行多重复一次。
两种方法都能完美满足需求,选哪种看你自己的习惯就好!
内容的提问来源于stack exchange,提问作者msksantosh
相关产品推荐
相关产品推荐

