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

如何将含重复列的Pandas DataFrame重塑为指定格式?

解决方案

观察当前DataFrame结构:1行数据包含两组重复的地址字段(AddressLine1到PostalCode),以及一个单独的SSN字段。目标是将其重塑为每行对应一组地址的格式,每行都包含完整的地址字段和SSN。

具体实现代码

import pandas as pd

# 原始数据构建
df = pd.DataFrame([
['2201 W WILLOW'], 
['2201 W WILLOW'], 
['ENID'], 
['ENID, OK 73073'], 
['73073'],
['2201 W WILLOW'], 
['2201 W WILLOW'], 
['ENID'], 
['ENID, OK 73073'], 
['73073'],['12345678']]).T

cols= ['AddressLine1', 'AddressLine123', 'City', 'CityStateZip', 'PostalCode',
'AddressLine1', 'AddressLine123', 'City', 'CityStateZip', 'PostalCode','SSN']

df.columns = cols

# 数据重塑操作
# 提取第一组地址数据
group1 = df.iloc[:, :5].copy()
# 提取第二组地址数据并统一列名
group2 = df.iloc[:, 5:10].copy()
group2.columns = group1.columns
# 合并两组地址
reshaped_df = pd.concat([group1, group2], ignore_index=True)
# 为每行添加SSN值
reshaped_df['SSN'] = df['SSN'].values[0]

print(reshaped_df)

输出结果

AddressLine1 AddressLine123   City    CityStateZip PostalCode       SSN
0  2201 W WILLOW   2201 W WILLOW  ENID  ENID, OK 73073      73073  12345678
1  2201 W WILLOW   2201 W WILLOW  ENID  ENID, OK 73073      73073  12345678

关键步骤说明

  1. 拆分原始DataFrame为两个独立的地址组,对应前5列和中间5列数据
  2. 统一两组数据的列名,确保合并后字段匹配
  3. 使用pd.concat合并两组数据,生成多行结构
  4. 将原始的SSN值复制到每一行,保证每条地址记录都关联正确的SSN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 05:25:53