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

Pandas处理Excel数据时NaN值无法归入同一列表的问题咨询

解决方案

核心原因

你之前的推测是正确的,Python中NaN != NaN是固定规则,因此直接用==判断无法匹配NaN值,需要用pandas内置的缺失值判断函数处理。

修改后的完整代码

import pandas as pd

df = pd.read_excel('/Users/jedknauer/code/Python xlsx/OPOS-Liste Kreditoren zum 31.08.2021.xlsx')
# 原排序代码保留,不影响后续逻辑
df.sort_values("Unnamed: 2", ascending = False)["Unnamed: 2"]

new_objects = []

for index, row in df.iterrows():
    b = row["Unnamed: 2"]
    # 初始化默认是新值,找到匹配项再改为False
    is_new = True
    
    # 第一条数据直接加入
    if index == 0:
        new_objects.append([b, [b]])
        continue
        
    # 遍历已有条目匹配
    for i in new_objects:
        existing_val = i[0]
        # 匹配规则:要么两个都是NaN,要么两个都非NaN且值相等
        if (pd.isna(b) and pd.isna(existing_val)) or (not pd.isna(b) and not pd.isna(existing_val) and b == existing_val):
            is_new = False
            i[-1].append(b)
            break
    
    if is_new:
        new_objects.append([b, [b]])

print(new_objects)

主要修改点

  • 引入pd.isna()函数专门判断NaN值,规避NaN == NaN返回False的规则问题
  • 修正了原逻辑中is_new的赋值错误:原逻辑只要碰到一个不匹配的条目就会把is_new设为True,会导致已经匹配到前面的条目、后面又碰到不匹配条目时被错误标记为新值
  • 优化了初始列表赋值逻辑,避免出现分类对应的子列表为空的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 05:15:01