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

如何修改Python函数提取pandas DataFrame中首个非null且非空的字符串值

修改方案

原有first_valid_index()仅能识别pandas原生的NaN/NaT等空值,无法识别""类空字符串,你可以先将目标列的空字符串替换为标准空值后再做筛选,修改后的代码如下:

import pandas as pd

def get_first_non_null_values(df):
    first_non_null_values = []
    # 单列过滤逻辑:返回首个非空、非空字符串的取值
    def fetch_first(series):
        processed = series.replace("", pd.NA)
        valid_idx = processed.first_valid_index()
        return processed.loc[valid_idx] if valid_idx is not None else None
    
    try:
        kst_val = fetch_first(df['kst'])
        # 若kst列全为空/空字符串,fallback到kst22
        if kst_val is None:
            raise ValueError("kst列无符合条件的值")
        first_non_null_values.append(kst_val)
    except:
        kst_val = fetch_first(df['kst22'])
        first_non_null_values.append(kst_val)
    return first_non_null_values


first_non_null_values = get_first_non_null_values(df_merged)

核心改动点

  • 新增fetch_first工具函数,统一处理单列的空字符串转标准空值逻辑,first_valid_index()会自动同时过滤原空值和转换后的空字符串对应行
  • 保留了原有的try-except调用逻辑,和你原有代码的执行逻辑保持一致
  • 增加了kst列全为空场景的判断,自动降级到kst22列取值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:15:01