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

Python中转换DataFrame格式并校验行是否存在于另一DataFrame

实现方法

首先导入pandas依赖:

import pandas as pd

如果需要测试可以先构造示例df1,真实场景下直接替换为你自己的数据读入逻辑即可:

df1 = pd.DataFrame({
    'city': ['sh', 'bj', 'bj', 'sh', 'sh', 'bj'],
    'year': [2019, 2020, 2020, 2020, 2020, 2021],
    'quarter': ['q4', 'q3', 'q2', 'q4', 'q1', 'q1']
})

接下来按需求处理数据:

# 把年份、季度拼接转为标准周期格式,方便后续匹配
df1['period'] = pd.to_datetime(df1['year'].astype(str) + df1['quarter'].str.upper()).dt.to_period('Q')
# 生成目标季度列,使用你提供的生成逻辑
target_periods = pd.date_range('2019-04-01', '2021-04-01', freq = 'Q').to_period('Q')
# 新增标记列,存在的记录统一标记为y
df1['mark'] = 'y'

最后生成结果:

# 按城市分组做透视,匹配对应季度的标记
res = df1.pivot_table(index='city', columns='period', values='mark', aggfunc='first')
# 重排列顺序为指定季度范围,缺失值自动补NaN
res = res.reindex(columns=target_periods).reset_index()
# 把列名转为示例要求的小写YYYY-qX格式
res.columns = ['city'] + [col.strftime('%Y-q%q').lower() for col in target_periods]

# 输出验证结果
print(res)

运行后输出的res就是你需要的目标格式数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:36:01