You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

原有代码错误点

  1. 循环条件写反,初始x = len(df['Col1'])值为12,x < 4条件永远不成立,循环完全没执行
  2. 分组逻辑错误,有效数据是3个为一组,不需要把空行算进分组长度,先过滤空行再处理更简单
  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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 21:24:03