如何用更少代码从DataFrame指定行生成n行相同的新DataFrame?
更简洁的实现方式
以下几种方法都能在更少代码行数内完成需求,同时避免低效的循环操作:
- 方法一:通过
pd.concat拼接重复的单行DataFrame
new_df = pd.concat([df.iloc[[idx]]] * n, ignore_index=True)
用df.iloc[[idx]]取出目标行并保持为DataFrame格式,将其重复n次后拼接,ignore_index=True用于重置新DataFrame的索引。
- 方法二:使用
repeat方法复制行
new_df = df.iloc[idx:idx+1].repeat(n).reset_index(drop=True)
先通过切片idx:idx+1获取单行DataFrame,调用repeat(n)实现行重复,最后用reset_index(drop=True)清理原索引,生成连续的新索引。
- 方法三:直接构造新DataFrame
new_df = pd.DataFrame([df.iloc[idx].values] * n, columns=df.columns)
提取目标行的数值数组并重复n次作为数据,同时指定原DataFrame的列名,直接生成新的DataFrame。
内容的提问来源于stack exchange,提问作者Simon Chemnitz-Thomsen
相关产品推荐
相关产品推荐

