Pandas调用value_counts()返回空Series如何获取DataFrame全量值计数?
问题原因
DataFrame.value_counts()的默认逻辑是统计整行内容完全一致的行组合的出现次数,并不会遍历统计所有单元格的独立取值。你拿到空的Series([], dtype:int64)结果,说明当前DataFrame里没有任何两行的内容是完全重复的,自然统计结果为空,和你要统计所有独立值出现次数的需求不匹配。
解决方法
根据你的统计需求选对应代码即可:
- 统计整个DataFrame中所有单元格的取值总出现次数(和你预期的输出格式完全匹配)
# 将二维DataFrame展平为一维Series后做值计数 counter = df.stack().value_counts() print(counter)
如果需要把空值NaN也纳入统计,给value_counts加参数即可:
counter = df.stack().value_counts(dropna=False)
- 如果需要逐列统计每一列内部的值计数,用apply逐列应用方法即可:
# 结果的行索引是取值,列对应原DataFrame的列,值为对应出现次数 col_wise_counter = df.apply(pd.Series.value_counts) print(col_wise_counter)
内容的提问来源于stack exchange,提问作者YellowSmy
相关产品推荐
相关产品推荐

