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

无法将分组数据转为numpy数组,报KeyError:'Số'错误

问题分析与解决办法

错误根源

你的CSV实际列名是Ngày(Date)和Số(Number),但代码里全程用"Số"作为列名,完全不匹配,这才触发了KeyError。另外分组后的apply操作已经返回列表,后续的eval属于多余操作,反而可能引发额外问题。

修正步骤

  • 统一列名:要么直接使用原始列名Số(Number)操作,要么提前把列名重命名为更简洁的Số,避免后续混淆。
  • 简化分组逻辑,去掉不必要的eval步骤。

完整修正代码

import numpy as np
import pandas as pd

# 读取CSV文件,指定编码和分隔符
df = pd.read_csv("C:/Users/Admin/lonum_fixed.csv", encoding="utf-8", sep=",")
# 去除列名前后可能存在的空格
df.columns = df.columns.str.strip()

# 方案1:直接使用原始列名进行分组,并指定结果列名
grouped_data = df.groupby("Ngày(Date)")["Số(Number)"].apply(lambda x: x.astype(int).tolist()).reset_index(name="Số")

# 方案2:先重命名列名再分组(更简洁)
# df.rename(columns={"Ngày(Date)": "Ngày", "Số(Number)": "Số"}, inplace=True)
# grouped_data = df.groupby("Ngày")["Số"].apply(lambda x: x.astype(int).tolist()).reset_index()

# 生成所需数据矩阵
data_matrix = np.array(grouped_data["Số"].tolist())

额外说明

  • 用x.astype(int).tolist()转换列表比list(map(int, x.values))更简洁高效。
  • reset_index(name="Số")可以直接指定分组后的结果列名,避免groupby操作后生成默认的匿名列,这也是之前可能导致列名混乱的潜在原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 01:22:39