Pandas拆分固定宽度列并转置生成二维数组的实现问题
问题1:按固定宽度拆分
Year/Period列 不需要用str.split(),有两种更适配固定宽度拆分的实现方案:
- 方案1:字符串切片(适合规则固定无变化的场景)
你当前Year固定占前4位,剩余内容为Period,直接按位置截取即可:
# 截取前4位为Year,第4位之后为Period df['Year'] = df['Year/Period'].str[:4] df['Period'] = df['Year/Period'].str[4:] # 可选:删除原列、调整列顺序 df = df.drop(columns=['Year/Period'])[['Year', 'Period', 'PurchDoc']]
- 方案2:正则提取(适配性更强,避免格式波动出错)
通过正则匹配字段规则,自动提取对应值,容错率更高:
# 匹配FY+两位数字作为Year,P+两位数字作为Period df[['Year', 'Period']] = df['Year/Period'].str.extract(r'^(FY\d{2})(P\d{2})', expand=True) df = df.drop(columns=['Year/Period'])[['Year', 'Period', 'PurchDoc']]
问题2:转置生成二维透视表
用Pandas的pivot透视方法即可直接实现你要的行转列效果:
# 以Year为行索引,Period为列名,PurchDoc为填充值 result_df = df.pivot(index='Year', columns='Period', values='PurchDoc').reset_index()
生成的result_df结构和你给出的示例完全一致,后续数值类型转换、空值处理你可以按自己需求调整。
内容的提问来源于stack exchange,提问作者Asrakh
相关产品推荐
相关产品推荐

