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

如何高效将DataFrame的values行转为列并输出为CSV文件?

问题

我有一个结构如下的DataFrame:

category    ID  values
       A   foo  ABCDEF
       A   baz  GHIJKL
       B   bar  MNOPQR
       B  biff  STUVWX
       C   bop  YZABCD

所有values字段的长度均相同。我希望将ID和values列输出到CSV文件,但需将values的每个字符转为列,输出格式如下:

foo  bar  baz  biff  bop
A    G    M    S     Y
B    H    N    T     Z
C    I    O    U     A
D    J    P    V     B
E    K    Q    W     C
F    L    R    X     D

我目前想到的方法是创建numpy数组并逐个填充values列,再转为DataFrame后用pandas输出为CSV,以ID作为表头。但该方法效率极低,请问是否有更优/更快的实现方法?

优化实现方法

可以利用pandas的内置矢量化操作高效完成,避免手动填充数组的低效流程,具体步骤及代码如下:

实现代码

import pandas as pd

# 构建示例DataFrame(实际使用时替换为你的数据源)
df = pd.DataFrame({
    'category': ['A', 'A', 'B', 'B', 'C'],
    'ID': ['foo', 'baz', 'bar', 'biff', 'bop'],
    'values': ['ABCDEF', 'GHIJKL', 'MNOPQR', 'STUVWX', 'YZABCD']
})

# 核心处理逻辑:拆分字符、转置结构
result = (
    df.set_index('ID')['values']
      .str.split('', expand=True)
      .drop(0, axis=1)  # 移除拆分产生的首空列
      .T
)

# 输出为CSV文件,分隔符可根据需求调整
result.to_csv('output.csv', sep='\t', index=False)

逻辑说明

  1. 设置索引:把ID设为DataFrame的索引,后续转置后直接成为表头。
  2. 拆分字符:用str.split('', expand=True)将每个values字符串按单个字符拆分,自动展开为多列,每列对应一个字符位置。
  3. 清理空列:拆分操作会在开头生成一个空字符串列,用drop移除。
  4. 转置结构:通过.T转置DataFrame,让原本按行排列的字符转为按行输出,完全匹配目标格式。

这种方法依赖pandas的内部优化,比手动循环填充数组效率高几个数量级,尤其适合处理大规模数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 06:05:27