在R语言中按单列扩展非分组数据框:生成指定重复行数记录
数据框行重复实现方案
问题说明
现有如下结构的数据框:
1. 2. 3. 4. 5. 6 1 15 0 1 0 1 0 2 9 1 1 0 0 1
第一列数字代表后续列内容需要重复的次数,目标是将第一行的0 1 0 1 0重复15次,第二行的1 1 0 0 1重复9次,生成新的数据框。
R语言实现
假设数据框名为df,可通过以下步骤实现:
- 用
rep()函数根据第一列数值生成重复的行索引 - 按索引提取原数据框的行,最后删除第一列即可
代码示例:
# 构造示例数据框 df <- data.frame( count = c(15, 9), col2 = c(0, 1), col3 = c(1, 1), col4 = c(0, 0), col5 = c(1, 0), col6 = c(0, 1) ) # 生成重复后的数据集 result_df <- df[rep(seq(nrow(df)), df$count), -1]
Python(Pandas)实现
假设数据框名为df,使用Pandas的repeat()方法快速实现:
- 调用
df.index.repeat()根据第一列的值生成重复的行索引 - 用索引提取行后,删除第一列并重置索引
代码示例:
import pandas as pd # 构造示例数据框 data = { 'count': [15, 9], 'col2': [0, 1], 'col3': [1, 1], 'col4': [0, 0], 'col5': [1, 0], 'col6': [0, 1] } df = pd.DataFrame(data) # 生成重复后的数据集 result_df = df.loc[df.index.repeat(df['count'])].drop(columns='count').reset_index(drop=True)
内容的提问来源于stack exchange,提问作者Egon Carter
相关产品推荐
相关产品推荐

