如何将numpy.int64转为int?Python函数返回类型错误求助
问题排查与修正
核心问题分析
你的代码存在两个关键问题,导致不符合需求或报错:
- 电影数量统计错误:原代码统计的是演员参演记录的条数,而非当年上映的电影数量——同一部电影被多个演员参演时会被重复计数。
- 数据类型不符合要求:分组后得到的年份和数量是
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
相关产品推荐
相关产品推荐

