如何将pandas单列存储的用户信息转换为多列结构化数据表
Python实现方案
核心逻辑
先过滤所有空行,再将剩余的有效数据按每3个一组重构成二维数组,直接生成结构化DataFrame,代码实现如下:
import pandas as pd # 原始数据 data = {'Col1': ['Bob', '101', 'First Street', '', 'Sue', '102', 'Second Street', '', 'Alex' , '200', 'Third Street', '']} df = pd.DataFrame(data) # 1. 过滤空行,提取有效数据 valid_series = df[df['Col1'].str.strip() != '']['Col1'] # 2. 按每组3个重构数据,指定列名 result_df = pd.DataFrame(valid_series.to_numpy().reshape(-1, 3), columns=['Name', 'Address', 'Street']) print(result_df)
运行后直接得到目标输出:
Name Address Street 0 Bob 101 First Street 1 Sue 102 Second Street 2 Alex 200 Third Street
原有代码错误点
- 循环条件写反,初始
x = len(df['Col1'])值为12,x < 4条件永远不成立,循环完全没执行 - 分组逻辑错误,有效数据是3个为一组,不需要把空行算进分组长度,先过滤空行再处理更简单
- 切片、重置索引的操作逻辑混乱,没有正确截取后续分组数据
R语言实现参考
library(tidyverse) # 原始数据 df <- data.frame(Col1 = c('Bob', '101', 'First Street', '', 'Sue', '102', 'Second Street', '', 'Alex' , '200', 'Third Street', '')) # 过滤空行后按3个一组重构 result_df <- df %>% filter(str_squish(Col1) != "") %>% pull(Col1) %>% matrix(ncol = 3, byrow = TRUE) %>% as.data.frame() %>% set_names(c('Name', 'Address', 'Street')) print(result_df)
内容的提问来源于stack exchange,提问作者pkpto39
相关产品推荐
相关产品推荐

