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

将3列DataFrame转换为指定Tuple格式以适配CoGroupByKey并写入BigQuery

DataFrame转CoGroupByKey兼容格式并适配BigQuery

我有一个包含3列的DataFrame,需要将其转换为Python Tuple格式(CoGroupByKey仅接受Tuple类型),要求以第一列peakid作为Key,同一行其余列元素作为Value;同时转换结果需兼容BigQuery的JSON格式Schema。

原始数据

peakidbcdatesmtdate
TKRG3/6/103/12/10
AMPG4/5/10
AMAD9/5/104/21/10

期望转换结果

[('TKRG', 
    {'bcdate': ['3/6/10'],
     'smtdate': ['3/12/10']}),
 ('AMPG', 
    {'bcdate': ['4/5/10'],
     'smtdate': []}),
 ('AMAD', 
    {'bcdate': ['9/5/10'],
     'smtdate': ['4/21/10']})
]

解决方案代码

使用Pandas的apply方法逐行处理,将空值转换为空列表,构造符合要求的Tuple结构:

import pandas as pd

# 构造原始DataFrame(实际场景可替换为读取你的数据源)
df = pd.DataFrame({
    'peakid': ['TKRG', 'AMPG', 'AMAD'],
    'bcdate': ['3/6/10', '4/5/10', '9/5/10'],
    'smtdate': ['3/12/10', '', '4/21/10']
})

# 定义行转换逻辑
def convert_row(row):
    value_dict = {
        'bcdate': [row['bcdate']] if row['bcdate'].strip() else [],
        'smtdate': [row['smtdate']] if row['smtdate'].strip() else []
    }
    return (row['peakid'], value_dict)

# 执行转换并得到结果
converted_result = df.apply(convert_row, axis=1).tolist()

print(converted_result)

说明

  • 转换逻辑中通过strip()处理空字符串,确保空白值被识别为空并转为空列表,适配CoGroupByKey的输入要求
  • 生成的字典结构符合BigQuery的JSON Schema规范,可直接用于后续写入BigQuery的操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 04:05:23