如何在Pandas中重复DataFrame每行指定次数?已实现R版本求Python方案
在Pandas中重复DataFrame每行指定次数的解决方案
嘿,我来帮你搞定这个需求!你要的是把DataFrame里的每一行重复指定次数(比如你例子里的7次),这个在Pandas里有好几种简洁的实现方式,和你R里的代码逻辑对应上的方案很容易写。
首先,先把你的样本数据转换成Pandas DataFrame:
import pandas as pd # 构造样本数据 df = pd.DataFrame({ 'X': [41, 54], 'a': [5, 3], 'c': [2, 1] })
方法1:用index.repeat()(最贴近你R代码的逻辑)
你R里用了rep(1:nrow(...), each=...)来生成重复的行索引,在Pandas里我们可以直接对DataFrame的索引做重复操作,然后用loc提取:
# 每行重复7次 repeated_df = df.loc[df.index.repeat(7)]
这个操作和你R代码的逻辑完全一致:先生成重复的行索引(每个索引重复7次),然后根据索引提取对应的行,最终就得到每行重复7次的结果。
如果你需要重置索引(避免重复的索引值影响后续操作),可以再加一步:
repeated_df = repeated_df.reset_index(drop=True)
方法2:用numpy.repeat(另一种灵活的方式)
如果你习惯用NumPy的工具,也可以用np.repeat来生成行的位置,再提取:
import numpy as np # 生成重复的行索引位置,然后提取 repeated_df = df.iloc[np.repeat(np.arange(len(df)), 7)] # 同样可以重置索引 repeated_df = repeated_df.reset_index(drop=True)
验证结果
运行上面的代码后,你可以用print(repeated_df)查看结果,会看到第一行41 | 5 | 2连续出现7次,第二行54 | 3 | 1也连续出现7次,完全符合你的需求。
内容的提问来源于stack exchange,提问作者madsthaks
相关产品推荐
相关产品推荐

