理解Pandas中numeric_only参数:分组求中位数的疑问
关于Pandas中median()的numeric_only参数问题解答
先纠正你一个误区:
median(['video_share_count'])这种写法是无效的。因为median()函数本身不接受列名列表作为参数,它的参数是axis、skipna、numeric_only这类控制计算逻辑的选项,你传的列名列表会被当成axis参数的值,根本起不到指定计算列的作用。为什么移除
numeric_only=True会返回多字段?
Pandas的median()默认会遍历数据框里的所有列,尝试计算每一列的中位数。如果你的数据框里除了video_share_count,还有其他数值型列(比如播放量、点赞数),这些列都会被计算中位数,最终返回包含所有这些列结果的数据框。而如果有非数值型列,Pandas在旧版本里可能会跳过它们,但新版本可能直接报错——numeric_only=True的作用就是明确告诉Pandas:只对数值型列执行中位数计算。实现需求的正确写法有两种:
- 先筛选目标列,再分组计算中位数(这种写法不需要
numeric_only,因为已经只保留了数值列):df.groupby('author_banned_status')['video_share_count'].median() - 对分组后的整个数据框调用
median(),同时指定numeric_only=True;如果你的数据框里只有video_share_count是数值列,结果就是你要的;如果还有其他数值列,建议用第一种写法精准筛选:df.groupby('author_banned_status').median(numeric_only=True)
- 先筛选目标列,再分组计算中位数(这种写法不需要
内容的提问来源于stack exchange,提问作者Charis
相关产品推荐
相关产品推荐

