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

Pandas多键查找:合并Google Sheets用户模块表与详情表

高效合并Google Sheets数据表的Pandas方案

1. 准备工作

  • 安装依赖库:
    pip install pandas gspread google-auth
    
  • 配置Google Sheets权限:去Google Cloud控制台创建项目并启用Sheets API,下载服务账号密钥JSON文件(命名为credentials.json),放在代码目录下。

2. 读取两张表数据

import pandas as pd
import gspread
from google.oauth2.service_account import Credentials

# 初始化权限
SCOPES = ['https://www.googleapis.com/auth/spreadsheets', 'https://www.googleapis.com/auth/drive']
creds = Credentials.from_service_account_file('credentials.json', scopes=SCOPES)
client = gspread.authorize(creds)

# 读取模块完成情况表(df1)
spreadsheet = client.open('你的表格名称')
worksheet_df1 = spreadsheet.worksheet('df1工作表名')
df1 = pd.DataFrame(worksheet_df1.get_all_records())

# 读取用户详细信息表(df2)
worksheet_df2 = spreadsheet.worksheet('df2工作表名')
df2 = pd.DataFrame(worksheet_df2.get_all_records())

3. 高效合并数据

Pandas的merge是矢量化操作,比Excel数组公式效率高几个数量级,根据你的需求选择合并方式:

  • 若要保留所有用户信息(以df2为基准):
    # 假设两张表通过`user_id`列关联
    merged_df = pd.merge(df2, df1, on='user_id', how='left')
    
  • 若只保留两张表共有的用户:
    merged_df = pd.merge(df2, df1, on='user_id', how='inner')
    
  • 若df1是长格式(每行对应一个用户的一个模块),先转宽格式再合并:
    # 转宽格式:以user_id为索引,模块名为列,完成状态为值
    df1_wide = df1.pivot(index='user_id', columns='module', values='completed').reset_index()
    merged_df = pd.merge(df2, df1_wide, on='user_id', how='left')
    

4. 将结果写回Google Sheets

# 创建结果工作表
worksheet_result = spreadsheet.add_worksheet(title='合并结果表', rows=merged_df.shape[0], cols=merged_df.shape[1])
# 写入数据(含表头)
worksheet_result.update([merged_df.columns.tolist()] + merged_df.values.tolist())

核心优势

  • 矢量化计算避免了Excel逐行循环的低效,5万行数据处理仅需几秒。
  • 代码可重复执行,无需手动维护Excel公式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 13:12:02