Pandas pivot_table未展示全部DataFrame值,CODE唯一值数量不符
问题原因说明
- 核心原因:
pandas.pivot_table默认会丢弃索引列中包含空值(NaN)的分组。你在index参数中指定了['CODE','STATION','PLACE','SECTOR','ALTITUDE']5个字段作为分组索引,从你提供的示例数据可以看到STATION列存在NaN值,只要某个CODE对应的索引组合里任意字段为NaN,该分组就会被默认过滤,最终导致输出的唯一CODE数量少于原始值。 - 次要排查方向:如果确认索引列都没有空值,可以检查是否存在部分CODE对应的所有行的
YEARS_OF_STATION字段都是NaN,pivot_table默认也会丢弃数值列全空的分组。
解决方法
你可以修改代码,添加dropna=False参数保留包含空值的分组:
table_years=pd.pivot_table(df,index=['CODE','STATION','PLACE', 'SECTOR','ALTITUDE'], columns=['MONTH'], values=['YEARS_OF_STATION'], dropna=False)
运行后再统计输出的唯一CODE数量,就能和原始值匹配了。
内容的提问来源于stack exchange,提问作者Javier
相关产品推荐
相关产品推荐

