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

Python中将Parquet文件转换为指定格式对象列表的方法

解决方案

可以通过**pandas的透视表(pivot)**将长格式数据转换为宽格式,再导出为目标JSON格式,具体实现步骤如下:

1. 数据转换(长表转宽表)

利用pivot方法将attribute_name转为列名,attribute_value作为对应列的值,以user_id为分组依据:

import pandas as pd

# 读取Parquet文件
df = pd.read_parquet('myfile.parquet', engine='pyarrow')

# 转换为宽格式:user_id作为行索引,attribute_name转为列,attribute_value为值
wide_df = df.pivot(index='user_id', columns='attribute_name', values='attribute_value').reset_index()

# 移除列名的层级标签
wide_df.columns = wide_df.columns.get_level_values(0)

如果数据中存在同一用户同一属性的多条记录,可以先按timestamp排序保留最新记录,再执行透视:

# 按user_id和attribute_name分组,保留最新的记录
df_sorted = df.sort_values('timestamp', ascending=False).drop_duplicates(subset=['user_id', 'attribute_name'], keep='first')
wide_df = df_sorted.pivot(index='user_id', columns='attribute_name', values='attribute_value').reset_index()
wide_df.columns = wide_df.columns.get_level_values(0)

2. 导出为目标JSON格式

使用to_json方法,指定orient='records'即可生成数组形式的JSON:

# 导出为JSON字符串
json_result = wide_df.to_json(orient='records', indent=2)

# 如果需要保存到文件
with open('user_attributes.json', 'w') as f:
    f.write(json_result)

执行后生成的JSON格式与要求完全一致:

[
  {
    "user_id": "111f07000612",
    "first_name": "Tom",
    "last_name": "Cruise",
    "city": "New York"
  },
  {
    "user_id": "abcf0700d009d122",
    "first_name": "Matt",
    "last_name": "Damon"
  }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 17:35:33