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

如何用Python为不规则Excel生成的Pandas DataFrame添加化合物归属列

解决方案

你可以利用Pandas的where()和ffill()方法实现这个需求,全程无需循环,既简洁又稳定,是Pythonic的处理方式:

  1. 标记化合物标题行:用where()方法仅保留A列中属于化合物标题的行(比如匹配以"Compound "开头的值),将其他行设为NaN,存入新的"Compound"列。
  2. 向前填充化合物名称:用ffill()(forward fill)将每个NaN值替换为上方最近的非空化合物名称,实现子条目自动匹配所属化合物。
  3. (可选)清理标题行:如果不需要保留原始的化合物标题行,可过滤掉这些行,只保留子条目数据。

代码示例

假设你的DataFrame名为df,原始数据列是A:

import pandas as pd

# 1. 初始化Compound列,仅保留化合物标题行的值
df['Compound'] = df['A'].where(df['A'].str.startswith('Compound '))

# 2. 向前填充,为所有子条目匹配所属化合物
df['Compound'] = df['Compound'].ffill()

# 3. 可选:过滤掉原始的化合物标题行,只保留子条目
df = df[~df['A'].str.startswith('Compound ')].reset_index(drop=True)

补充说明

  • 如果你的化合物标题不是以"Compound "开头,可调整str.startswith()的参数,或者用str.contains()匹配更通用的模式(比如df['A'].str.contains('Compound \w+'))。
  • ffill()会自动处理不同化合物下条目数量不固定的情况,无论标题下有多少条子条目,都会正确继承上方的化合物名称。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 18:32:16