如何在Pandas DataFrame中获取总问题数并赋值给变量
获取Pandas DataFrame中的总问题数
咱们先搞清楚你现在的问题所在:你用scale.dtypes.value_counts()得到的float64 3,其实是统计了scale这个DataFrame里数据类型为float64的列的数量,而不是你要的总问题数,这就是为什么结果和预期不符啦。
正确的解决方案
方法1:直接从原始分组数据中计数
在你的循环里,当拿到对应时间区间的groups数据后,直接对Questions列计数就能得到该时间段的总问题数——毕竟每一行数据对应一个问题:
for month in month_unique: month_data = data.loc[data['Month'] == month] for week in week_unique: groups = month_data.loc[month_data['Week'] == week] # 获取该时间段的总问题数 total_questions = groups['Questions'].count() print(f"总问题数:{total_questions}") # 你原来的分组统计代码 scale = groups.groupby(['Clusters', 'Day'])['Clusters'].count().unstack('Clusters').fillna(0)
方法2:从已分组的scale中求和
如果已经得到了scale这个分组统计后的DataFrame,也可以对所有单元格的值求和——因为每个单元格的数值就是对应分组的问题数量,累加后就是总问题数:
total_questions = scale.sum().sum() print(f"总问题数:{total_questions}")
为什么你的原始方法不对?
scale.dtypes.value_counts()的作用是统计DataFrame中不同数据类型的列的数量,你的scale刚好有3列(Grafana、Logs、Topic)且都是float64类型,所以返回float64 3,这和问题总数完全无关。- 看你提供的CSV数据,确实有3条问题记录,用上面两种方法都能得到你想要的数值3。
内容的提问来源于stack exchange,提问作者Yeager
相关产品推荐
相关产品推荐

