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

如何用Python在Pandas DataFrame中查找并汇总特定字符串

Pandas DataFrame添加汇总列解决方案

问题回顾

你需要给现有DataFrame新增两列:

  • 第一列:汇总每行所有包含字符串Gra的非空记录
  • 第二列:记录每行最后一条非空的有效记录

错误原因

你之前用iteritems()遍历的是DataFrame的列,而非行,所以只会输出整列数据,无法实现按行的筛选和提取操作。

实现代码

1. 导入依赖并构造示例数据(如果已有DataFrame可跳过)

import pandas as pd

# 模拟你的原始DataFrame
data = {
    "Well ID": [100, 101],
    "1": ["1 to 2 Gra", "1 to 3 Blu"],
    "2": ["4 to 5 Blu Gra", "3 to 6 Gra"],
    "3": ["5 to 7 Red", pd.NA],
    "50": [pd.NA, pd.NA]
}
df_gravel = pd.DataFrame(data)

2. 添加"Gra"汇总列

通过apply按行处理,筛选每行非空且包含Gra的记录,组成列表:

search_word = "Gra"
df_gravel["Gra"] = df_gravel.apply(
    lambda row: [val for val in row if pd.notna(val) and search_word in str(val)],
    axis=1  # axis=1表示按行处理
)

3. 添加"Last Record"列

提取每行最后一个非空值,若整行为空则返回pd.NA:

df_gravel["Last Record"] = df_gravel.apply(
    lambda row: row.dropna().iloc[-1] if not row.dropna().empty else pd.NA,
    axis=1
)

最终结果

运行后你的DataFrame会变成:

Well ID12350GraLast Record
1001 to 2 Gra4 to 5 Blu Gra5 to 7 RedNaN['1 to 2 Gra', '4 to 5 Blu Gra']5 to 7 Red
1011 to 3 Blu3 to 6 GraNaNNaN['3 to 6 Gra']3 to 6 Gra

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 04:55:14