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

如何按含NaN值的modules列对names列分组生成字典?

解决方法

问题核心是原始表格里modules列的NaN值实际属于上一个非空的模块,只需先填充这些空值,再进行分组即可得到预期结果。

完整修正代码

import requests
import pandas as pd
from bs4 import BeautifulSoup

# 爬取网页表格
url = "https://mordred-descriptor.github.io/documentation/master/descriptors.html"
html = requests.get(url).content
soup = BeautifulSoup(html, 'html.parser')
table = soup.find('table')
df = pd.read_html(str(table))[0]

# 保留需要的列
processed_df = df.drop(['#', 'constructor', 'dim', 'description'], axis=1)

# 填充modules列的NaN值:用前一个非空模块名填充(匹配表格中同一模块下子项的结构)
processed_df['modules'] = processed_df['modules'].ffill()

# 按模块分组,生成名称列表的字典
module_dict = processed_df.groupby('modules')['names'].apply(list).to_dict()

# 示例查看前3组结果
print(list(module_dict.items())[:3])

关键步骤说明

  • 填充空值:ffill()方法会把modules列的NaN替换为上一行的非空模块名,完美适配网页表格“模块名下方行属于该模块”的排版逻辑。
  • 分组生成字典:填充完成后,用groupby按模块分组,把每个模块对应的names收集为列表,最后转成字典即可得到键为模块名、值为对应名称列表的结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 06:35:30