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

Python处理Excel时遇'None of ... are in the [columns]'错误求助

问题分析与解决

核心错误原因

  1. 列名不匹配:错误提示'None of ... are in the [columns]'说明代码中指定的列名'Data de Vencimento'和Excel文件的实际列名不一致,可能存在拼写错误、前后空格或大小写差异。
  2. 日期类型不兼容:datetime.date.today()返回的是date对象,而pandas读取Excel日期后默认是datetime64[ns]类型,直接比较会导致匹配失败。
  3. 条件赋值语法错误:原代码的条件判断逻辑写法错误,df[df['Data de Vencimento']]是无效的布尔索引用法,无法实现逐行判断。

分步解决方案

1. 确认并修正列名

先执行以下代码查看Excel文件的实际列名,确保和代码中使用的一致:

import pandas as pd
data = pd.read_excel(r'C:\Users\DiegoRocco\Downloads\clientes.xlsx')
print(data.columns.tolist())

如果输出列名和'Data de Vencimento'有差异(比如末尾多空格、拼写错误),将代码中的列名替换为实际列名即可。

2. 统一日期类型

将系统当前日期转换为pandas兼容的类型,或者把Excel读取的日期列转换为date类型,两种方式任选其一:

  • 方式一:转换系统日期
today = pd.Timestamp(datetime.date.today())
  • 方式二:转换Excel日期列
df['Data de Vencimento'] = df['Data de Vencimento'].dt.date
today = datetime.date.today()

3. 正确实现条件赋值

以下两种方式均可实现需求,同时处理空值:

方案一:使用np.where(简洁写法)

import numpy as np
import pandas as pd
import datetime

# 读取Excel文件
df = pd.read_excel(r'C:\Users\DiegoRocco\Downloads\clientes.xlsx')

# 统一日期类型并确保列是datetime格式
today = pd.Timestamp(datetime.date.today())
df['Data de Vencimento'] = pd.to_datetime(df['Data de Vencimento'], errors='coerce')

# 创建新列并处理空值
df['Situação'] = np.where(
    df['Data de Vencimento'].isna(),
    'Data de vencimento inválida',
    np.where(
        df['Data de Vencimento'].dt.date == today.date(),
        'Pagamento não-pendente',
        'Pagamento pendente'
    )
)

print(df)

方案二:使用df.loc(直观易读)

import pandas as pd
import datetime

# 读取Excel文件
df = pd.read_excel(r'C:\Users\DiegoRocco\Downloads\clientes.xlsx')

# 统一日期类型
today = datetime.date.today()
df['Data de Vencimento'] = df['Data de Vencimento'].dt.date

# 初始化新列
df['Situação'] = 'Pagamento pendente'

# 修改匹配当前日期的行状态
df.loc[df['Data de Vencimento'] == today, 'Situação'] = 'Pagamento não-pendente'

# 标记空值行
df.loc[df['Data de Vencimento'].isna(), 'Situação'] = 'Data de vencimento inválida'

print(df)

关键注意事项

  • 确保Excel文件路径正确,且当前用户有读取权限。
  • 如果Excel中的日期格式不标准,使用pd.to_datetime(..., errors='coerce')可强制转换,无法识别的日期会转为NaT(空日期)。

内容的提问来源于stack exchange,提问作者Diego Nogueira Rocco

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 04:06:19