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

Python中如何按日期条件查询JSON字典键值 处理GitHub仓库API数据

实现步骤及完整代码
import pandas as pd 
import json

url = "https://api.github.com/users/mralexgray/repos"
# 读取接口返回的仓库数据
df = pd.read_json(url)

# 1. 将字符串格式的created_at转为带时区的datetime格式,方便后续日期比较和计算
df['created_at'] = pd.to_datetime(df['created_at'])

# 2. 筛选created_at晚于等于2013-06-04的仓库
filter_benchmark = pd.to_datetime('2013-06-04', utc=True)
filtered_df = df[df['created_at'] >= filter_benchmark].copy()

# 3. 提取嵌套字段值
## 提取owner下的login、id(对应需求中的owner key)
filtered_df['owner_login'] = filtered_df['owner'].apply(lambda x: x.get('login'))
filtered_df['owner_key'] = filtered_df['owner'].apply(lambda x: x.get('id'))

## 提取license下的key、name,兼容无license的空值场景
filtered_df['license_key'] = filtered_df['license'].apply(lambda x: x.get('key') if pd.notna(x) else None)
filtered_df['license_name'] = filtered_df['license'].apply(lambda x: x.get('name') if pd.notna(x) else None)

# 4. 将符合条件的仓库created_at延后1个月
filtered_df['created_at_after_delay'] = filtered_df['created_at'] + pd.DateOffset(months=1)

# 输出最终结果
result = filtered_df[['owner_login', 'owner_key', 'license_key', 'license_name', 'created_at', 'created_at_after_delay']]
print(result)

关键逻辑说明

  • 嵌套字段处理:接口返回的owner、license都是嵌套字典结构,用apply结合get方法取值,避免字段不存在时报错
  • 日期一致性:统一转换为带UTC时区的datetime格式,避免不同时区的日期比较报错
  • 用copy()生成新的筛选后数据框,避免后续修改触发pandas链式赋值警告

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:27:03