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

使用Pandas Melt处理爬取数据的DataFrame,如何删除指定列并设置列标题?

问题解决:调整Pandas数据处理逻辑以匹配预期输出

问题根源

你的初始data_coverage_table包含空列表作为首个元素,后续的set_index和melt操作逻辑未对齐预期表格结构,导致输出格式不符合要求。

修正步骤

  1. 清理原始数据:移除初始空列表,确保所有行都是有效保障项数据
  2. 简化DataFrame构建:直接用有效数据构建DataFrame,明确设置Coverage列作为索引,列名对应Limit和Deduct
  3. 转置并调整格式:无需复杂的melt操作,直接转置DataFrame后,生成符合预期的列名格式

完整修正代码

import pandas as pd
from openpyxl import load_workbook

# 清理后的原始数据(移除开头空列表)
data_coverage_table = [
    ['Bodily Injury Liability', '$250,000 Ea Person / $500,000 Ea Accident', '---'],
    ['Property Damage Liability', '$100,000', '---'],
    ['Uninsured Motorist Bodily Injury', '$250,000 Ea Person / $500,000 Ea Accident', '---'],
    ['Identity Fraud Expense Coverage', '---', '---'],
    ['Glass', '---', '$50']
]

# 爬取逻辑修正(初始化空列表而非带空元素的列表)
# data_coverage_table = []
# for row in data_coverage:
#     cells = row.find_elements(by=By.XPATH, value=".//td")
#     row_data = [cell.text for index, cell in enumerate(cells) if index != 1]
#     data_coverage_table.append(row_data)

texts = ["Limit", "Deduct"]
# 构建规范的DataFrame
df = pd.DataFrame(data_coverage_table, columns=['Coverage'] + texts).set_index('Coverage')

# 转置并调整列名格式
df_transposed = df.T
new_columns = [f"{col}-{idx}" for idx, col in zip(df_transposed.index, df_transposed.columns)]
df_transposed.columns = new_columns

# 写入Excel文件
with pd.ExcelWriter('AutoPersonal.xlsx', engine='openpyxl', mode='a', if_sheet_exists='replace') as writer:
    writer.book = load_workbook('AutoPersonal.xlsx')
    df_transposed.to_excel(writer, sheet_name='test1', index=False)

说明

  • 修正爬取逻辑:初始化空列表存储爬取数据,避免引入无效空行
  • 转置操作直接得到横向表格结构,通过列表推导式生成保障项-类型格式的列名,完全匹配预期输出
  • 整体逻辑更简洁直观,避免了原代码中不必要的多层索引操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 23:35:22