如何使用Pandas将JSON格式购买频次数据转换为扁平宽表
实现方法
首先先确认你的DataFrame中buys列的类型:如果是从CSV等文件读取得到的,大概率是字符串格式的字典,需要先转为Python原生字典类型;如果本身已经是字典类型可以跳过类型转换步骤。
完整代码
import pandas as pd import ast # 假设你的原始DataFrame名为df # 步骤1:如果buys是字符串格式的字典,先转成Python字典类型 df['buys'] = df['buys'].apply(ast.literal_eval) # 步骤2:把buys列的字典展开为独立的商品列 expanded_df = df.join(df['buys'].apply(pd.Series)) # 步骤3:设置客户为行索引,删除原始buys列,空值填0后统一转为整数格式 result = expanded_df.set_index('customer').drop(columns=['buys']).fillna(0).astype(int)
逻辑说明
df['buys'].apply(pd.Series)会自动把每行字典的key作为列名、value作为对应行的取值,没有对应商品购买记录的行位置默认生成空值NaNfillna(0)会把所有无购买记录的空值替换为0,astype(int)保证所有频次值都是整数格式,符合购买频次的业务特征- 最终输出的
result就是你需要的宽表格式,支持直接输入后续模型使用,150种商品的规模下完全不会有性能问题。
内容的提问来源于stack exchange,提问作者Santoo
相关产品推荐
相关产品推荐

