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
相关产品推荐
相关产品推荐

