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

使用Pandas将Excel用户数据转置为DataFrame的技术求助

解析Excel第一列并转置用户id/full字段的Pandas实现

情况1:id和full按行交替排列(每行一个字段)

比如原始Excel第一列内容为:

id: 1001
full: Alice Smith
id: 1002
full: Bob Johnson

处理代码:

import pandas as pd

# 读取Excel第一列(无列名时指定自定义列名)
df_raw = pd.read_excel("your_large_file.xlsx", usecols=[0], header=None, names=["raw"])

# 按每2行一组分组,转置后得到每个用户的id和full字段
user_groups = df_raw.index // 2
df_temp = df_raw.groupby(user_groups)["raw"].apply(lambda x: pd.Series(x.values)).T

# 重命名列并提取字段的实际值
df_temp.columns = ["id", "full"]
df_temp["id"] = df_temp["id"].str.extract(r"id:\s*(.*)")
df_temp["full"] = df_temp["full"].str.extract(r"full:\s*(.*)")

# 重置索引得到最终结构的DataFrame
df_final = df_temp.reset_index(drop=True)

情况2:id和full在同一行(空格/分隔符分隔)

比如原始Excel第一列内容为:

id: 1001 full: Alice Smith
id: 1002 full: Bob Johnson

处理代码:

import pandas as pd

df_raw = pd.read_excel("your_large_file.xlsx", usecols=[0], header=None, names=["raw"])

# 用正则直接提取同一行中的id和full值
df_final = df_raw["raw"].str.extract(r"id:\s*(.*?)\s+full:\s*(.*)")
df_final.columns = ["id", "full"]

处理超大型Excel(分块读取)

如果文件过大无法一次性加载,采用分块处理避免内存溢出:

import pandas as pd

chunk_size = 10000  # 按需调整块大小
processed_chunks = []

# 分块读取并逐块处理(这里用情况1的逻辑,可根据实际格式替换)
for chunk in pd.read_excel("your_large_file.xlsx", usecols=[0], header=None, names=["raw"], chunksize=chunk_size):
    user_groups = chunk.index // 2
    chunk_temp = chunk.groupby(user_groups)["raw"].apply(lambda x: pd.Series(x.values)).T
    chunk_temp.columns = ["id", "full"]
    chunk_temp["id"] = chunk_temp["id"].str.extract(r"id:\s*(.*)")
    chunk_temp["full"] = chunk_temp["full"].str.extract(r"full:\s*(.*)")
    processed_chunks.append(chunk_temp)

# 合并所有处理后的块
df_final = pd.concat(processed_chunks, ignore_index=True)

注意事项

  • 若原始字段格式不是id: xxx的形式,需调整正则表达式或字符串分割逻辑适配实际格式
  • 若每个用户的数据块包含更多字段,可通过定位id行的索引,取对应后续行提取full字段

内容的提问来源于stack exchange,提问作者Umberto

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:05:35