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

Python列表移除float类型nan值,市场篮子分析数据预处理问题

可行解决方案

方案1:DataFrame阶段直接处理(更高效,推荐)

不需要先转成带空值的列表再过滤,直接在DataFrame操作时就对每行做空值过滤,一步得到目标结果:

import pandas as pd

# 你之前的空行删除逻辑保留
df.dropna(subset = ["Presc01"], inplace=True)
df.index = range(len(df))

# 直接对每行过滤空值后转嵌套列表
prescriptions = df.apply(lambda row: row.dropna().tolist(), axis=1).tolist()

执行后得到的prescriptions每个子列表都已经自动剔除了所有空值,不需要额外处理。

方案2:对已生成的带空值列表做过滤

如果你已经生成了带nan的嵌套列表,用pd.isnull()做判断即可,该方法兼容字符串、float等多种类型,不会报错:

import pandas as pd

filtered_prescriptions = [
    [item for item in row if not pd.isnull(item)] 
    for row in prescriptions
]

如果你的场景可能混入字符串形式的'nan',可以叠加一层判断确保万无一失:

filtered_prescriptions = [
    [item for item in row if not pd.isnull(item) and str(item).lower() != 'nan'] 
    for row in prescriptions
]

之前方法失效原因说明

  • np.isnan()失效:该方法仅支持数值类型输入,你列表中混合了字符串类型的药名,传入字符串会直接抛出异常,无法完成判断
  • x != 'nan'失效:你列表中的nan是float类型的原生空值,不是字符串格式的'nan',字符串匹配自然无效
  • 如果你使用x == x的逻辑没有生效,大概率是遍历逻辑错误,没有逐行遍历嵌套列表的每个元素

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:15:03