如何将数据集多列分组值合并至单列并按组展示?
将多列分组变量合并至单列实现分组标题与子项同列展示
我有一个包含多列分组变量的数据集,需要把分组值合并到单列,让分组标题和对应的子项在同一列展示。
现有数据集
| VAR1 | VAR2 | SCORE |
|---|---|---|
| MALE | LOC1 | 20 |
| MALE | LOC2 | 30 |
| MALE | LOC3 | 40 |
| FEMALE | LOC4 | 50 |
| FEMALE | LOC5 | 60 |
| FEMALE | LOC6 | 70 |
期望输出数据集
| VAR1 | SCORE |
|---|---|
| MALE | |
| LOC1 | 20 |
| LOC2 | 30 |
| LOC3 | 40 |
| FEMALE | |
| LOC4 | 50 |
| LOC5 | 60 |
| LOC6 | 70 |
Python(Pandas)实现
通用分组遍历方法
import pandas as pd # 构造原数据集 df = pd.DataFrame({ 'VAR1': ['MALE', 'MALE', 'MALE', 'FEMALE', 'FEMALE', 'FEMALE'], 'VAR2': ['LOC1', 'LOC2', 'LOC3', 'LOC4', 'LOC5', 'LOC6'], 'SCORE': [20, 30, 40, 50, 60, 70] }) result_list = [] # 遍历每个分组生成标题行和子项行 for group_name, group_data in df.groupby('VAR1'): # 添加分组标题行(SCORE为空) result_list.append(pd.DataFrame({'VAR1': [group_name], 'SCORE': ['']})) # 转换子项行:将VAR2替换为VAR1,保留SCORE列 sub_df = group_data.rename(columns={'VAR2': 'VAR1'})[['VAR1', 'SCORE']] result_list.append(sub_df) # 合并所有行并重置索引 final_result = pd.concat(result_list, ignore_index=True) print(final_result)
R语言实现(dplyr + tibble)
library(dplyr) library(tibble) # 构造原数据集 df <- data.frame( VAR1 = c("MALE", "MALE", "MALE", "FEMALE", "FEMALE", "FEMALE"), VAR2 = c("LOC1", "LOC2", "LOC3", "LOC4", "LOC5", "LOC6"), SCORE = c(20, 30, 40, 50, 60, 70) ) # 分组处理生成标题行和子项行 final_result <- df %>% group_by(VAR1) %>% group_modify(~{ # 创建分组标题行 title_row <- tibble(VAR1 = .y$VAR1, SCORE = NA) # 转换子项行,替换列名并保留目标列 sub_rows <- .x %>% rename(VAR1 = VAR2) %>% select(VAR1, SCORE) # 合并标题行与子项行 bind_rows(title_row, sub_rows) }) %>% ungroup() print(final_result)
内容的提问来源于stack exchange,提问作者VAMSI KRISHNA Gundabattuni
相关产品推荐
相关产品推荐

