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

如何将numpy.int64转为int?Python函数返回类型错误求助

问题排查与修正

核心问题分析

你的代码存在两个关键问题,导致不符合需求或报错:

  1. 电影数量统计错误:原代码统计的是演员参演记录的条数,而非当年上映的电影数量——同一部电影被多个演员参演时会被重复计数。
  2. 数据类型不符合要求:分组后得到的年份和数量是numpy.int64类型,而非需求指定的Python原生int类型。

修正后的代码

import pandas as pd, numpy as np
def explore_data(df):
    # 1. 获取df形状
    df_shape = df.shape
    # 2. 获取前5行
    df_head = df.head()
    # 3. 统计每年上映的电影数量(先去重同一部电影的多条演员记录)
    # 按film_id和film_name去重,确保同一部电影只算一次
    unique_films = df.drop_duplicates(subset=['film_id', 'film_name'])
    # 分组统计年份对应的电影数量
    year_counts = unique_films.groupby('year').size()
    # 转换为Python原生int类型的字典
    year_dict = {int(year): int(count) for year, count in year_counts.items()}
    
    return (df_shape, df_head, year_dict)

关键改动说明

1. 电影去重处理

使用drop_duplicates(subset=['film_id', 'film_name'])对电影记录去重,确保同一部电影(无论多少演员参演)只被统计一次,符合“当年上映电影数量”的需求。

2. 类型转换与字典构建

  • 用字典推导式替代循环,更简洁高效。
  • 通过int()将numpy.int64类型的年份和计数转换为Python原生int,满足需求中对类型的要求。

int与numpy.int64的区别

  • Python原生int:动态大小的整数类型,支持任意精度,是Python内置的基础类型,兼容性更强。
  • numpy.int64:numpy库提供的固定64位整数类型,主要用于numpy数组的数值计算,在一些需要原生int的场景(如字典键、序列化、第三方库交互)中会出现类型不兼容问题,因此需要转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 01:15:46