如何将含重复列的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
关键步骤说明
- 拆分原始DataFrame为两个独立的地址组,对应前5列和中间5列数据
- 统一两组数据的列名,确保合并后字段匹配
- 使用
pd.concat合并两组数据,生成多行结构 - 将原始的SSN值复制到每一行,保证每条地址记录都关联正确的SSN
内容的提问来源于stack exchange,提问作者myamulla_ciencia
相关产品推荐
相关产品推荐

