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

Python实现DataFrame拼接字符串行转列的高效代码方案

高效实现DataFrame格式转换的Python代码

针对你给出的DataFrame转换需求,下面是基于pandas的高效实现方案,适合处理大规模数据:

import pandas as pd

# 构造原始DataFrame(实际使用时替换成你的数据源)
df = pd.DataFrame({
    'UserId': ['u1', 'u2'],
    'PurchaseCnt': ['Bread:6, Milk:11', 'Water:3']
})

# 拆分PurchaseCnt为单个商品条目并展开
df_expanded = df.assign(PurchaseCnt=df['PurchaseCnt'].str.split(', ')).explode('PurchaseCnt')

# 拆分商品名和数量为单独列
df_expanded[['Product', 'Count']] = df_expanded['PurchaseCnt'].str.split(':', expand=True)

# 将数量转为数值类型
df_expanded['Count'] = pd.to_numeric(df_expanded['Count'])

# pivot转宽表,缺失值填充为0
result_df = df_expanded.pivot_table(
    index='UserId',
    columns='Product',
    values='Count',
    fill_value=0,
    aggfunc='sum'
).reset_index()

# 移除自动生成的列名层级
result_df.columns.name = None

print(result_df)

代码说明:

  • 全程使用pandas的矢量化字符串操作和内置方法,避免低效的循环遍历,适配大规模数据集处理
  • str.split + explode 快速拆分并展开多商品条目
  • pivot_table 高效完成长表转宽表操作,fill_value=0 自动填充缺失的商品数量
  • 所有操作均为pandas底层优化实现,性能远优于自定义循环

运行后输出结果如下:

UserId  Bread  Milk  Water
0     u1      6    11      0
1     u2      0     0      3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 01:42:06