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
相关产品推荐
相关产品推荐

